feat: remove ruby (#20)
This commit is contained in:
@@ -40,10 +40,5 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
python-version: '3.11'
|
python-version: '3.11'
|
||||||
|
|
||||||
- name: Setup Ruby
|
|
||||||
uses: ruby/setup-ruby@v1
|
|
||||||
with:
|
|
||||||
ruby-version: '3.3'
|
|
||||||
|
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: argc test
|
run: argc test
|
||||||
@@ -9,7 +9,6 @@ LANG_CMDS=( \
|
|||||||
"sh:bash" \
|
"sh:bash" \
|
||||||
"js:node" \
|
"js:node" \
|
||||||
"py:python" \
|
"py:python" \
|
||||||
"rb:ruby" \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# @cmd Call the function
|
# @cmd Call the function
|
||||||
@@ -142,7 +141,6 @@ test-functions() {
|
|||||||
'sh#may_execute_command#{"command":"echo \"✓\""}' \
|
'sh#may_execute_command#{"command":"echo \"✓\""}' \
|
||||||
'js#may_execute_js_code#{"code":"console.log(\"✓\")"}' \
|
'js#may_execute_js_code#{"code":"console.log(\"✓\")"}' \
|
||||||
'py#may_execute_py_code#{"code":"print(\"✓\")"}' \
|
'py#may_execute_py_code#{"code":"print(\"✓\")"}' \
|
||||||
'rb#may_execute_rb_code#{"code":"puts \"✓\""}' \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
for test_case in "${test_cases[@]}"; do
|
for test_case in "${test_cases[@]}"; do
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# LLM Functions
|
# LLM Functions
|
||||||
|
|
||||||
This project allows you to enhance large language models (LLMs) with custom functions written in bash/js/python/ruby. Imagine your LLM being able to execute system commands, access web APIs, or perform other complex tasks – all triggered by simple, natural language prompts.
|
This project allows you to enhance large language models (LLMs) with custom functions written in bash/js/python. Imagine your LLM being able to execute system commands, access web APIs, or perform other complex tasks – all triggered by simple, natural language prompts.
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
@@ -165,35 +165,6 @@ def execute(data):
|
|||||||
exec(data["code"])
|
exec(data["code"])
|
||||||
```
|
```
|
||||||
|
|
||||||
### Ruby
|
|
||||||
|
|
||||||
Create a new ruby script in the [./tools/](./tools/) directory (e.g., `may_execute_rb_code.rb`).
|
|
||||||
|
|
||||||
```rb
|
|
||||||
def declarate
|
|
||||||
{
|
|
||||||
"name": "may_execute_rb_code",
|
|
||||||
"description": "Runs the ruby code.",
|
|
||||||
"parameters": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"code": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Ruby code to execute, such as `puts \"hello world\"`"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
def execute(data)
|
|
||||||
eval(data["code"])
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
The project is under the MIT License, Refer to the [LICENSE](https://github.com/sigoden/llm-functions/blob/main/LICENSE) file for detailed information.
|
The project is under the MIT License, Refer to the [LICENSE](https://github.com/sigoden/llm-functions/blob/main/LICENSE) file for detailed information.
|
||||||
-71
@@ -1,71 +0,0 @@
|
|||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
require 'json'
|
|
||||||
require 'pathname'
|
|
||||||
|
|
||||||
def parse_argv
|
|
||||||
func_file = __FILE__
|
|
||||||
func_data = nil
|
|
||||||
|
|
||||||
if func_file.end_with?("tool.rb")
|
|
||||||
func_file = ARGV[0]
|
|
||||||
func_data = ARGV[1]
|
|
||||||
else
|
|
||||||
func_file = File.basename(func_file)
|
|
||||||
func_data = ARGV[0]
|
|
||||||
end
|
|
||||||
|
|
||||||
func_file += '.rb' unless func_file.end_with?(".rb")
|
|
||||||
|
|
||||||
[func_file, func_data]
|
|
||||||
end
|
|
||||||
|
|
||||||
def load_func(func_file)
|
|
||||||
func_path = File.expand_path("../tools/#{func_file}", __dir__)
|
|
||||||
|
|
||||||
begin
|
|
||||||
require func_path
|
|
||||||
rescue LoadError
|
|
||||||
puts "Invalid function: #{func_file}"
|
|
||||||
exit 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def load_env(file_path)
|
|
||||||
return unless File.exist?(file_path)
|
|
||||||
|
|
||||||
File.readlines(file_path).each do |line|
|
|
||||||
line = line.strip
|
|
||||||
next if line.empty? || line.start_with?('#')
|
|
||||||
|
|
||||||
key, *value = line.split('=', 2)
|
|
||||||
ENV[key.strip] = value.join('=').strip
|
|
||||||
end
|
|
||||||
rescue StandardError
|
|
||||||
end
|
|
||||||
|
|
||||||
ENV['LLM_FUNCTIONS_DIR'] = Pathname.new(__dir__).join('..').expand_path.to_s
|
|
||||||
|
|
||||||
load_env(Pathname.new(ENV['LLM_FUNCTIONS_DIR']).join('.env').to_s)
|
|
||||||
|
|
||||||
func_file, func_data = parse_argv
|
|
||||||
|
|
||||||
if ENV["LLM_FUNCTION_ACTION"] == "declarate"
|
|
||||||
load_func(func_file)
|
|
||||||
puts JSON.pretty_generate(declarate)
|
|
||||||
else
|
|
||||||
if func_data.nil?
|
|
||||||
puts "No json data"
|
|
||||||
exit 1
|
|
||||||
end
|
|
||||||
|
|
||||||
begin
|
|
||||||
args = JSON.parse(func_data)
|
|
||||||
rescue JSON::ParserError
|
|
||||||
puts "Invalid json data"
|
|
||||||
exit 1
|
|
||||||
end
|
|
||||||
|
|
||||||
load_func(func_file)
|
|
||||||
execute(args)
|
|
||||||
end
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
def declarate
|
|
||||||
{
|
|
||||||
"name": "may_execute_rb_code",
|
|
||||||
"description": "Runs the ruby code.",
|
|
||||||
"parameters": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"code": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Ruby code to execute, such as `puts \"hello world\"`"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
def execute(data)
|
|
||||||
eval(data["code"])
|
|
||||||
end
|
|
||||||
Reference in New Issue
Block a user