mirror of
https://github.com/qdrant/landing_page.git
synced 2026-10-04 10:28:29 +02:00
130 lines
4.2 KiB
Markdown
130 lines
4.2 KiB
Markdown
---
|
||
title: OpenAI Agents
|
||
aliases: [ /documentation/frameworks/swarm/ ]
|
||
---
|
||
|
||
# OpenAI Agents
|
||
|
||
[OpenAI Agents](https://github.com/openai/openai-agents-python) is a Python framework to build agentic AI apps in a lightweight, easy-to-use package with very few abstractions. It's a production-ready upgrade of the experimental framework, [Swarm](https://github.com/openai/swarm).
|
||
|
||
## Getting Started
|
||
|
||
To start using OpenAI Agents, follow these steps:
|
||
|
||
- Install the package
|
||
|
||
```bash
|
||
pip install openai-agents
|
||
```
|
||
|
||
- Set up your OpenAI API key
|
||
|
||
```bash
|
||
export OPENAI_API_KEY="<YOUR_KEY>"
|
||
```
|
||
|
||
## How It Works
|
||
|
||
The Agents SDK has a very small set of primitives:
|
||
|
||
- `Agents`, which are LLMs equipped with instructions and tools
|
||
- `Handoffs`, which allow agents to delegate to other agents for specific tasks
|
||
- `Guardrails`, which enable the inputs to agents to be validated
|
||
|
||
Used with Python, these building blocks make it easy to create real-world apps with tool-agent interactions and minimal learning curve. Plus, the SDK also includes tracing to help you debug, evaluate, and fine-tune your agent workflows.
|
||
|
||
## Creating Your First Agents
|
||
|
||
Here’s a basic example of three agents:
|
||
|
||
- Triage Agent: Acts as the initial point of contact. It analyzes the user's question and decides whether to route it to a specialized agent.
|
||
- Math Tutor: A specialist agent designed to help with math-related questions.
|
||
- History Tutor: A specialist agent focused on historical topics.
|
||
|
||
```python
|
||
from agents import Agent, Runner
|
||
|
||
|
||
math_tutor_agent = Agent(
|
||
name="Math Tutor",
|
||
handoff_description="Specialist agent for math questions",
|
||
instructions="You provide help with math problems. Explain your reasoning at each step and include examples",
|
||
)
|
||
|
||
history_tutor_agent = Agent(
|
||
name="History Tutor",
|
||
handoff_description="Specialist agent for historical questions",
|
||
instructions="You provide assistance with historical queries. Explain important events and context clearly.",
|
||
)
|
||
|
||
triage_agent = Agent(
|
||
name="Triage Agent",
|
||
instructions="You determine which agent to use based on the user's homework question",
|
||
handoffs=[history_tutor_agent, math_tutor_agent],
|
||
)
|
||
|
||
# Run the interaction
|
||
result = Runner.run_sync(triage_agent, "I want some help with WW1.")
|
||
print(result.final_output)
|
||
```
|
||
|
||
## Integrating with Qdrant
|
||
|
||
You can connect agents to retrieve or ingest data into a Qdrant collection. Thereby building your knowledge base. Here’s how to enable an agent to retrieve information from Qdrant.
|
||
|
||
Assume you have a Qdrant [collection created](https://qdrant.tech/documentation/concepts/collections/#create-a-collection) using the `"text-embedding-3-small"` model. The payload structure includes a `text` field for knowledge storage.
|
||
|
||
```python
|
||
import qdrant_client
|
||
from openai import OpenAI
|
||
from agents import Agent, function_tool
|
||
|
||
# Initialize clients
|
||
openai_client = OpenAI()
|
||
qdrant = qdrant_client.QdrantClient(host="localhost")
|
||
|
||
# Configuration
|
||
EMBEDDING_MODEL = "text-embedding-3-small"
|
||
COLLECTION_NAME = "help_center"
|
||
LIMIT = 5
|
||
SCORE_THRESHOLD = 0.7
|
||
|
||
@function_tool
|
||
def query_qdrant(query: str) -> str:
|
||
"""Retrieve semantically relevant content from Qdrant.
|
||
|
||
Args:
|
||
query: The query to search.
|
||
"""
|
||
embedded_query = openai_client.embeddings.create(
|
||
input=query,
|
||
model=EMBEDDING_MODEL,
|
||
).data[0].embedding
|
||
|
||
results = qdrant.query_points(
|
||
collection_name=COLLECTION_NAME,
|
||
query=embedded_query,
|
||
limit=LIMIT,
|
||
score_threshold=SCORE_THRESHOLD,
|
||
).points
|
||
|
||
if results:
|
||
return "\n".join([point.payload["text"] for point in results])
|
||
else:
|
||
return "No results found."
|
||
|
||
qdrant_agent = Agent(
|
||
name="Qdrant searcher",
|
||
handoff_description="Specialist agent for retrieving info from a Qdrant collection",
|
||
instructions="You help find answers for user queries using Qdrant. Do not make up any info on your own.",
|
||
tools=[query_qdrant],
|
||
)
|
||
```
|
||
|
||
Our `qdrant_agent` can now query a Qdrant collection whenever deemed necessary to answer a user query.
|
||
|
||
## Further Reading
|
||
|
||
- [Agents Documentation](https://openai.github.io/openai-agents-python/)
|
||
- [Agents Examples](https://github.com/openai/openai-agents-python/tree/main/examples)
|