LLM Functions
This project helps you easily create LLM tools and agents using Bash/JavaScript/Python, and provides a library of commonly used LLM tools and agents.
Prerequisites
Make sure you have the following tools installed:
Getting Started with AIChat
Currently, AIChat is the only CLI tool that supports llm-functions. We look forward to more tools supporting llm-functions.
1. Clone the repository
git clone https://github.com/sigoden/llm-functions
2. Build tools and agents
I. Create a ./tools.txt file with each tool filename on a new line.
get_current_weather.sh
execute_command.sh
#execute_py_code.py
Where is the web_search tool?
The normal web_search tool does not exist. Please run argc link-web-search <web-search-tool> to link to one of the available web_search_* tools.
$ argc link-web-search web_search_<tab>
web_search_cohere.sh web_search_perplexity.sh web_search_tavily.sh web_search_vertexai.sh
II. Create a ./agents.txt file with each agent name on a new line.
coder
todo
III. Run argc build to build tools and agents.
3. Install to AIChat
Symlink this repo directory to AIChat's functions_dir:
ln -s "$(pwd)" "$(aichat --info | grep -w functions_dir | awk '{print $2}')"
# OR
argc install
4. Start using the functions
Done! Now you can use the tools and agents with AIChat.
aichat --role %functions% what is the weather in Paris?
aichat --agent todo list all my todos
Writing Your Own Tools
Building tools for our platform is remarkably straightforward. You can leverage your existing programming knowledge, as tools are essentially just functions written in your preferred language.
LLM Functions automatically generates the JSON declarations for the tools based on comments. Refer to ./tools/demo_tool.{sh,js,py} for examples of how to use comments for autogeneration of declarations.
Bash
Create a new bashscript in the ./tools/ directory (.e.g. execute_command.sh).
#!/usr/bin/env bash
set -e
# @describe Execute the shell command.
# @option --command! The command to execute.
main() {
eval "$argc_command" >> "$LLM_OUTPUT"
}
eval "$(argc --argc-eval "$0" "$@")"
Javascript
Create a new javascript in the ./tools/ directory (.e.g. execute_js_code.js).
/**
* Execute the javascript code in node.js.
* @typedef {Object} Args
* @property {string} code - Javascript code to execute, such as `console.log("hello world")`
* @param {Args} args
*/
exports.main = function main({ code }) {
return eval(code);
}
Python
Create a new python script in the ./tools/ directory (e.g. execute_py_code.py).
def main(code: str):
"""Execute the python code.
Args:
code: Python code to execute, such as `print("hello world")`
"""
return exec(code)
Writing Your Own Agents
Agent = Prompt + Tools (Function Callings) + Documents (RAG), which is equivalent to OpenAI's GPTs.
The agent has the following folder structure:
└── agents
└── myagent
├── functions.json # JSON declarations for functions (Auto-generated)
├── index.yaml # Agent definition
├── tools.txt # Shared tools
└── tools.{sh,js,py} # Agent tools
The agent definition file (index.yaml) defines crucial aspects of your agent:
name: TestAgent
description: This is test agent
version: 0.1.0
instructions: You are a test ai agent to ...
conversation_starters:
- What can you do?
variables:
- name: foo
description: This is a foo
documents:
- local-file.txt
- local-dir/
- https://example.com/remote-file.txt
Refer to ./agents/demo for examples of how to implement a agent.
License
The project is under the MIT License, Refer to the LICENSE file for detailed information.