Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A simple, intuitive toolkit for quickly implementing LLM powered applications.
| Date | Stars |
|---|---|
| 2026-07-31 | 275 |
| 2026-08-06 | 275 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
<img src="readme_imgs/axe.png" width="150" height="150"/>
# llm-axe
<img alt="PyPI - Version" src="https://img.shields.io/pypi/v/llm-axe"> <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dm/llm-axe">
<img alt="GitHub forks" src="https://img.shields.io/github/forks/emirsahin1/llm-axe?style=flat">
[](https://github.com/emirsahin1/llm-axe)
[](https://discord.gg/4DyMcRbK4G)
## Goal
llm-axe is meant to be a flexible toolkit that provides simple abstractions for commonly used functions related to LLMs. It's not meant to intrude in your development workflow as other larger frameworks often do.
It has functions for **automatic schema generation**, **pre-made agents** with self-tracking chat history and fully **customizable agents**.
[Have feedback/questions? Join the Discord](https://discord.gg/4DyMcRbK4G)
[Read the Development Documentation](https://github.com/emirsahin1/llm-axe/wiki)
## Installation
```bash
pip install llm-axe
```
## Example Snippets
- **Streaming Support**:
```python
llm = OllamaChat(model="llama3.1")
ag = Agent(llm, custom_system_prompt="", stream=True)
res = ag.ask("Explain who you are in 20 paragraphs")
for chunk in res:
print(chunk, end="", flush=True)
```
- **Easily Work With Non-Persistent Embeddings**:
```python
from llm_axe import read_pdf, find_most_relevant, split_into_chunks
text = read_pdf("./super_long_text.pdf")
sentences = split_into_chunks(text, 3)
pairs = []
for chunk in sentences:
embeddings = client.embeddings(model='nomic-embed-text', prompt=chunk)["embedding"]
pairs.append((chunk, embeddings))
prompt = "What do the Hobbit traditions say about second breakfast?"
prompt_embedding = client.embeddings(model='nomic-embed-text', prompt=prompt)["embedding"]
relevant_texts = find_most_relevant(pairs, prompt_embedding, top_k=4)
```
- **Function Calling**
  A function calling LLM can be created with just **3 lines of code**:
<br>
  No need for premade schemas, templates, special prompts, or specialized functions.
```python
prompt = "I have 500 coins, I just got 200 more. How many do I have?"
llm = OllamaChat(model="llama3:instruct")
fc = FunctionCaller(llm, [get_time, get_date, get_location, add, multiply])
result = fc.get_function(prompt)
```
- **Custom Agent**
```python
llm = OllamaChat(model="llama3:instruct")
agent = Agent(llm, custom_system_prompt="Always respond with the word LLAMA, no matter what")
resp = agent.ask("What is the meaning of life?")
print(resp)
# Output
# LLAMA
```
- **Online Agent**
```python
prompt = "Tell me a bit about this website: https://toscrape.com/?"
llm = OllamaChat(model="llama3:instruct")
searcher = OnlineAgent(llm)
resp = searcher.search(prompt)
#output: Based on information from the internet, it appears that https://toscrape.com/ is a website dedicated to web scraping.
# It provides a sandbox environment for beginners and developers to learn and validate their web scraping technologies...
```
- **PDF Reader**
```python
llm = OllamaChat(model="llama3:instruct")
files = ["../FileOne.pdf", "../FileTwo.pdf"]
agent = PdfReader(llm)
resp = agent.ask("Summarize these documents for me", files)
```
- **Data Extractor**
```python
llm = OllamaChat(model="llama3:instruct")
info = read_pdf("../Example.pdf")
de = DataExtractor(llm, reply_as_json=True)
resp = de.ask(info, ["name", "email", "phone", "address"])
#output: {'Name': 'Frodo Baggins', 'Email': '[email protected]', 'Phone': '555-555-5555', 'Address': 'Bag-End, Hobbiton, The Shire'}
```
- **Object Detector**
```python
llm = OllamaChat(model="llava:7b")
detector = ObjectDetectorAgent(llm, llm)
resp = detector.detect(images=[".Excerpt of 4,952 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:2e38798278984ca8, llm:Topics: function-calling, llama3, llm, local-llm, ollama, pdf-llm; description: 'A simple, intuitive toolkit for quickly implementing LLM powered applications.'
matched fp:2e38798278984ca8, llm:Topics: function-calling, llama3, llm, local-llm, ollama, pdf-llm; description: 'A simple, intuitive toolkit for quickly implementing LLM powered applications.'
matched fp:2e38798278984ca8, llm:Topics: function-calling, llama3, llm, local-llm, ollama, pdf-llm; description: 'A simple, intuitive toolkit for quickly implementing LLM powered applications.'