Take your best shot
Project description
🎯 BestShot: The best few shots with LLMs
Ever wished your AI model had a better memory? Meet BestShot - the simple yet powerful library for managing and retrieving few-shot examples with style! 🧠✨
🌟 Features
- 🚀 Lightning Fast: Both sync and async implementations for maximum flexibility
- 🎮 Easy to Use: Simple, intuitive API for managing your AI's example database
- 🔄 Structured Output: Support for structured outputs
🚀 Quick Start
from sentence_transformers import SentenceTransformer # Can also use OpenAI, etc.
from best_shot.client import BestShot
from best_shot.embed.transformers import TransformersEmbedder
from best_shot.store.memory import MemoryStore
# Create a BestShot client
client = BestShot(
embed=TransformersEmbedder(model=SentenceTransformer("all-MiniLM-L6-v2")),
store=MemoryStore()
)
# Add some examples
client.add(
inputs="How do I make a pizza?",
outputs="1. Make the dough 2. Add toppings 3. Bake at 450°F"
)
# Find similar examples
results = client.list("What's the recipe for pizza?", limit=1)
for shot, similarity in results:
print(f"Found match (similarity: {similarity:.2f}):")
print(f"Q: {shot.inputs}")
print(f"A: {shot.outputs}")
🔧 Installation
pip install best-shot
rye add best-shot
poetry add best-shot
🎮 Usage Examples
Working with Structured Output I/O
# Add structured data
client.add(
inputs={"type": "greeting", "language": "English"},
outputs={"text": "Hello, world!"}
)
# Search with similar inputs
results = client.list({"type": "greeting", "language": "English"})
Async Support
from best_shot.async_client import AsyncBestShot
client = AsyncBestShot(embed=async_embedder, store=async_store)
# Add examples asynchronously
await client.add(
inputs="What's the weather like?",
outputs="I don't have access to real-time weather data."
)
# Search asynchronously
results = await client.list("How's the weather today?", limit=1)
Using LiteLLM for Embeddings
from functools import partial
from litellm import aembedding
from fewshot import AsyncBestShot
from best_shot.embed.litellm import AsyncLiteLLMEmbedder
client = AsyncBestShot(
embed=AsyncLiteLLMEmbedder(
partial(aembedding, model="...", **kwargs),
),
store=MemoryStore()
)
🛠️ Core Components
- Shot: The fundamental unit representing an input-output pair with a unique ID (you can use your own ID or let BestShot hash the inputs)
- Embedder: Converts inputs into vector embeddings for similarity search
- Store: Manages storage and retrieval of examples
- Client: Ties everything together with a clean, simple interface
💡 Use Cases
- 🤖 Enhance your chatbot with dynamic example retrieval
- 📚 Build a self-improving knowledge base
- 🎯 Implement context-aware few-shot learning
- 🧪 Test and experiment with different few-shot strategies
🤝 Contributing
We love contributions! Feel free to:
- Fork the repository
- Create a feature branch
- Submit a pull request
📝 License
MIT License - feel free to use it in your projects!
Made with ❤️ by developers who believe in the power of learning from examples.
Remember: The best AI is the one that learns from experience! 🌟
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file few_shots-0.1.1.tar.gz.
File metadata
- Download URL: few_shots-0.1.1.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
619614770b3edcbb1de98fd58b841417f38534c1d288611aefa47c3591cb4f0e
|
|
| MD5 |
b924708d9fc2224d795dbdb3817499b4
|
|
| BLAKE2b-256 |
1e7527988deff1629749be39407f4c80f77f8a3a156dabc972fc8aa72b50274a
|
File details
Details for the file few_shots-0.1.1-py3-none-any.whl.
File metadata
- Download URL: few_shots-0.1.1-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae616a02ffbfe32f2d7f7bfc8405805cf28b80301d04def94f428f4a44265a48
|
|
| MD5 |
e5194c38d934676a9d9c26964e532f59
|
|
| BLAKE2b-256 |
1f4ee232f086180c2dacc231ef3a9ab0a46210bda9a0d8882f20d8946ae7af47
|