OpenAI Agents
OpenAI Agents 是一个 Python 框架,用于构建轻量级、易于使用且抽象非常少的智能体 AI 应用程序。它是实验性框架 Swarm 的生产级升级。
入门
要开始使用 OpenAI Agents,请按照以下步骤操作
- 安装包
pip install openai-agents
- 设置您的 OpenAI API 密钥
export OPENAI_API_KEY="<YOUR_KEY>"
工作原理
Agents SDK 包含一组非常小的基本元素
Agents
,即配备指令和工具的 LLMHandoffs
,允许智能体将特定任务委托给其他智能体Guardrails
,用于验证智能体的输入
与 Python 结合使用,这些构建块可以轻松创建具有工具-智能体交互的实际应用程序,并且学习曲线极低。此外,SDK 还包含跟踪功能,可帮助您调试、评估和微调智能体工作流程。
创建您的第一个 Agents
这里有三个 Agents 的基本示例
- 分类 Agent:作为初始联系点。它分析用户的问题并决定是否将其路由到专门的 Agent。
- 数学导师:专门帮助解决数学相关问题的 Agent。
- 历史导师:专注于历史主题的 Agent。
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)
与 Qdrant 集成
您可以连接 Agent 以从 Qdrant 集合中检索或将数据摄取到其中。从而构建您的知识库。以下是如何启用 Agent 从 Qdrant 中检索信息。
假设您使用 "text-embedding-3-small"
模型创建了一个 Qdrant 集合。有效载荷结构包含一个用于知识存储的 text
字段。
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],
)
我们的 qdrant_agent
现在可以在认为必要时查询 Qdrant 集合,以回答用户查询。