Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.3%) to scientific vocabulary
Keywords
Repository
autonomous agent with access to a tool library
Basic Info
- Host: GitHub
- Owner: HRI-EU
- License: bsd-3-clause
- Language: Python
- Default Branch: main
- Homepage: https://hri-eu.github.io/tulip_agent/
- Size: 9.1 MB
Statistics
- Stars: 41
- Watchers: 1
- Forks: 4
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
README.md
🌷🤖 tulip agent

A reference implementation for the tulip agent, an LLM-backed agent with access to a large number of tools via a tool library.
This approach reduces costs, enables the use of tool sets that exceed API limits or context windows, and increases flexibility with regard to the tool set used.
Key components
🔬 Function analysis \ Generates OpenAI API compatible tool descriptions for Python functions via introspection
🌷 Tool library \ Combines a vector store for semantic search among tools and tool execution
🤖 Agents\
Specifying instructions for an agent completely overrides the base system prompts to avoid contradictions.
You can append custom instructions to the default prompts in tulip_agent.agents.prompts.
* Baseline, without tool library
* BaseAgent: LLM agent without tool access
* NaiveToolAgent: Includes tool descriptions for all tools available
* CotToolAgent: Extends the NaiveToolAgent with a planning step that decomposes the user input into subtasks
* Tulip variations with access to a tool library
* MinimalTulipAgent: Minimal implementation; searches for tools based on the user input directly
* NaiveTulipAgent: Naive implementation; searches for tools with a separate tool call
* CotTulipAgent: COT implementation; derives a plan for the necessary steps and searches for suitable tools
* InformedCotTulipAgent: Same as CotTulipAgent, but with a brief description of the tool library's contents
* PrimedCotTulipAgent: Same as CotTulipAgent, but primed with tool names based on an initial search with the user request
* OneShotCotTulipAgent: Same as CotTulipAgent, but the system prompt included a brief example
* AutoTulipAgent: Fully autonomous variant; can use the search tool at any time and modify its tool library with CRUD operations
* DfsTulipAgent: DFS inspired variant that leverages a DAG for keeping track of tasks and suitable tools, can create new tools
📊 Evaluation
* math_eval: Math evaluation
* robo_eval: Robotics evaluation using tools created for AttentiveSupport
📝 Examples \
See ./examples
Setup
- Make sure to set the environment variables required by the API of your choice. Currently supported:
- OpenAI:
OPENAI_API_KEY, see the official instructions - Azure:
AZURE_OPENAI_API_KEY,AZURE_API_VERSION, andAZURE_OPENAI_ENDPOINT - OpenAI compatible endpoints:
OAI_COMPATIBLE_BASE_URLandOAI_COMPATIBLE_API_KEYfor OpenAI compatible endpoints, such as Ollama
- OpenAI:
- Install with
uv venv --allow-existing && uv syncorpip install -e . - Check out the
examples, the robot evaluation insrc/eval/robo_eval, andexamples/local_examples.pyfor a local setup
Dev notes
- Python v3.10.11 recommended, higher versions may lead to issues with chroma during installation
- Pre-commit hooks - install with
(uv) pre-commit install - Linting: ruff
- Formatting: black
- Import sorting: isort
- Tests: Run with
(uv run) python -m unittest discover tests/
Known issues
SQLite version incompatibility
See these troubleshooting instructions
1. On Linux install pysqlite3-binary: uv add pysqlite3-binary
2. Add the following to lib/python3.10/site-packages/chromadb/__init__.py in your venv
python
__import__('pysqlite3')
import sys
sys.modules['sqlite3'] = sys.modules.pop('pysqlite3')
Running the example results in a ModuleNotFoundError
Make sure to install the package itself, e.g., with uv sync or pip install -e . \
Then run the example with uv run examples/calculator_example.py
Owner
- Name: Honda Research Institute Europe GmbH
- Login: HRI-EU
- Kind: organization
- Email: info@honda-ri.de
- Location: Offenbach, Germany
- Website: www.honda-ri.de
- Repositories: 44
- Profile: https://github.com/HRI-EU
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Ocker"
given-names: "Felix"
- family-names: "Tanneberg"
given-names: "Daniel"
- family-names: "Eggert"
given-names: "Julian"
- family-names: "Gienger"
given-names: "Michael"
title: "tulip agent"
version: 0.1.0
url: "https://github.com/HRI-EU/tulip_agent"
preferred-citation:
type: article
authors:
- family-names: "Ocker"
given-names: "Felix"
- family-names: "Tanneberg"
given-names: "Daniel"
- family-names: "Eggert"
given-names: "Julian"
- family-names: "Gienger"
given-names: "Michael"
doi: "10.48550/arXiv.2407.21778"
journal: "arXiv preprint arXiv:2407.21778"
month: 7
title: "Tulip Agent -- Enabling LLM-Based Agents to Solve Tasks Using Large Tool Libraries"
year: 2024
GitHub Events
Total
- Watch event: 10
- Delete event: 2
- Push event: 27
- Fork event: 1
- Create event: 1
Last Year
- Watch event: 10
- Delete event: 2
- Push event: 27
- Fork event: 1
- Create event: 1
Dependencies
- 111 dependencies
- black ^24.1.1 develop
- pre-commit ^3.6.2 develop
- ruff ^0.2.1 develop
- chromadb ^0.4.22
- docstring-parser ^0.16
- isort ^5.13.2
- matplotlib ^3.8.3
- openai ^1.12.0
- python ^3.10.11
- scipy ^1.13.0
- tiktoken ^0.7.0