Early Function-Calling Agent with LlamaIndex
Overview
An early (2023) internal build exploring function-calling agents with the LlamaIndex library, wiring an LLM to callable tools and a small toy domain to see how tool-using agents behave. A hands-on R&D spike during the first wave of LLM agent tooling.
Why It Exists
When function-calling and tool use first landed, we needed direct experience with how to define tools, route an LLM’s tool calls, and combine that with indexing/RAG. This repo (described in-repo as a llamaindex-with-functions test) is that exploration.
What We Built
A Python project pinning early-era versions of the ecosystem, llama-index 0.6.32, langchain 0.0.211, openai 0.27.8, plus Flask and Streamlit for interfaces and weaviate-client for vector storage. It includes an agent.py and an agents/ package, a cargame.py toy domain with its own cargame_tools/ (a small set of callable functions for the agent to invoke), a llama.py indexing module, a chat interface, and chat_history.jsonl. A Dockerfile packages it up.
Technologies & Approach
LlamaIndex and LangChain for agent/index orchestration, OpenAI models for reasoning, Weaviate for vectors, tiktoken for token accounting, and Flask/Streamlit for UI. This is a build against the libraries (not a fork of them), framed honestly as early-adopter learning.
Outcome / Impact
Built early, practical familiarity with function-calling agents, tool routing, and RAG at a time when the patterns were brand new, foundational experience that informed later agent work.
Capabilities Demonstrated
- Early adoption of function-calling / tool-using LLM agents
- Hands-on LlamaIndex + LangChain orchestration
- RAG and vector-store (Weaviate) iterative development
- Designing custom tool sets for an agent to call