Atomic Agents 框架快速入门指南
atomic_agents Building AI agents, atomically 项目地址: https://gitcode.com/gh_mirrors/at/atomic_agents
前言
Atomic Agents 是一个功能强大的AI代理框架,它提供了构建智能对话系统的完整解决方案。本文将带你快速了解如何使用这个框架构建不同类型的AI代理应用。
环境准备
安装框架
首先需要安装框架的核心包:
pip install atomic-agents
配置API密钥
框架支持多种AI服务提供商,需要提前配置相应的API密钥:
# OpenAI
export OPENAI_API_KEY="your-openai-key"
# Anthropic
export ANTHROPIC_API_KEY="your-anthropic-key"
# Groq
export GROQ_API_KEY="your-groq-key"
# Gemini
export GEMINI_API_KEY="your-gemini-key"
# OpenRouter
export OPENROUTER_API_KEY="your-openrouter-key"
基础聊天机器人实现
核心组件介绍
- AgentMemory:负责存储对话历史
- BaseAgent:基础代理类,处理用户输入和生成响应
- BaseAgentConfig:代理配置类
代码实现
import os
import instructor
import openai
from rich.console import Console
from atomic_agents.lib.components.agent_memory import AgentMemory
from atomic_agents.agents.base_agent import BaseAgent, BaseAgentConfig, BaseAgentInputSchema, BaseAgentOutputSchema
# 初始化控制台输出
console = Console()
# 设置对话记忆
memory = AgentMemory()
initial_message = BaseAgentOutputSchema(chat_message="你好!今天有什么可以帮您的吗?")
memory.add_message("assistant", initial_message)
# 配置OpenAI客户端
client = instructor.from_openai(openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY")))
# 创建基础代理
agent = BaseAgent(
config=BaseAgentConfig(
client=client,
model="gpt-4o-mini",
memory=memory,
)
)
# 启动对话循环
while True:
user_input = console.input("[bold blue]你:[/bold blue] ")
if user_input.lower() in ["/exit", "/quit"]:
console.print("正在退出对话...")
break
input_schema = BaseAgentInputSchema(chat_message=user_input)
response = agent.run(input_schema)
console.print("助手: ", response.chat_message)
流式响应实现
对于需要实时响应的场景,可以使用异步流式处理:
import asyncio
from rich.live import Live
async def main():
# 初始化异步客户端
client = instructor.from_openai(openai.AsyncOpenAI(api_key=os.getenv("OPENAI_API_KEY")))
# 创建代理
agent = BaseAgent(
config=BaseAgentConfig(
client=client,
model="gpt-4o-mini",
memory=memory,
)
)
# 使用Live实现流式输出
with Live("", refresh_per_second=10) as live:
current_response = ""
async for partial_response in agent.run_async(input_schema):
if hasattr(partial_response, "chat_message"):
current_response = partial_response.chat_message
display_text = Text.assemble(("助手: ", "bold green"), (current_response, "green"))
live.update(display_text)
asyncio.run(main())
自定义输入输出结构
框架支持自定义输入输出结构,实现更结构化的交互:
from pydantic import Field
from typing import List
class CustomOutputSchema(BaseIOSchema):
chat_message: str = Field(..., description="对话消息内容")
suggested_questions: List[str] = Field(..., description="建议的后续问题列表")
# 配置自定义系统提示
system_prompt = SystemPromptGenerator(
background=["这是一个知识丰富的AI助手"],
steps=["分析用户输入", "生成响应", "提供后续问题建议"],
output_instructions=["保持友好专业的语气"]
)
# 使用自定义配置创建代理
agent = BaseAgent(
config=BaseAgentConfig(
client=client,
model="gpt-4o-mini",
system_prompt_generator=system_prompt,
output_schema=CustomOutputSchema,
)
)
多AI服务提供商支持
框架支持多种AI服务提供商,可以根据需求灵活选择:
def setup_client(provider):
if provider == "openai":
client = instructor.from_openai(OpenAI(api_key=os.getenv("OPENAI_API_KEY")))
model = "gpt-4o-mini"
elif provider == "anthropic":
client = instructor.from_anthropic(Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")))
model = "claude-3-5-haiku"
# 其他提供商配置...
return client, model
# 根据选择创建代理
provider = input("选择服务提供商: ")
client, model = setup_client(provider)
agent = BaseAgent(config=BaseAgentConfig(client=client, model=model))
最佳实践建议
- 内存管理:合理使用AgentMemory存储对话历史,但注意控制存储量
- 错误处理:添加适当的异常处理机制应对API调用失败
- 性能优化:对于高频交互场景,考虑使用异步实现
- 安全考虑:妥善保管API密钥,避免硬编码在代码中
进阶学习方向
掌握了基础用法后,可以进一步探索:
- 工具集成:让代理能够调用外部工具和API
- 高级记忆管理:实现长期记忆和上下文保持
- 多代理协作:构建多个代理协同工作的系统
- 自定义模型:集成自有或本地运行的模型
通过Atomic Agents框架,开发者可以快速构建功能丰富、响应灵敏的AI代理应用,满足各种业务场景需求。
atomic_agents Building AI agents, atomically 项目地址: https://gitcode.com/gh_mirrors/at/atomic_agents
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考