微信扫码
添加专属顾问
我要投稿
构建私有化AI中台的新选择,像搭乐高一样轻松搭建高性能AI代理。 核心内容: 1. Agno框架的全面功能和简易使用方式 2. 无缝集成大型语言模型,管理代理状态和内存 3. 用Agno构建特定领域AI代理的实践案例与应用场景
Agno 是一个开源框架, 旨在创建具有记忆、知识保留、工具集成和复杂推理等功能的高级 AI 代理。 它使开发人员能够无缝集成任何大型语言模型 (LLM), 管理代理的状态和内存,甚至协调多个协同工作的代理。
Agno 的真正力量在于它能够构建高性能、 特定领域的 AI 代理 ,并提供在生产中监控和优化它们的工具。 由于其足够简单,所以在你的业务场景中集成 Agno 几乎感受不到什么影响。
任何你能想到的场景,都可以方便使用 Agno 实现,比如:
从官方的角度看,Agno 适用于哪些场景呢?
如果你在构建 AI 产品时,
Agno 专为此类用例而设计。
当然,用 Agno 构建代理很简单, 只需要使用熟悉的编程结构(if、else、while、for)编写 AI 逻辑, 避免使用图形和链等复杂的抽象。
下面是一个可以搜索网络的简单代理(搜索工具框架里面已经提供了):
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGoTools()],
markdown=True
)
agent.print_response("北京最近有什么新闻?", stream=True)
更复杂的一个例子,你可以设置代理的 description
、instructions
、expected_output
:
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[ExaTools(start_published_date=today, type="keyword")],
description=dedent(""" """),
instructions=dedent(""" """),
expected_output=dedent(""" """),
markdown=True,
show_tool_calls=True,
add_datetime_to_instructions=True,
)
另一个特别有用的功能是结构化输出,这比你手写 prompt 定义 expected_output
更方便。
class MovieScript(BaseModel):
setting: str = Field(..., description="为一部大片提供一个精彩的场景设定。")
ending: str = Field(..., description="电影的结局。如果没有特别要求,提供一个喜剧结局。")
genre: str = Field(
..., description="电影的类型。如果没有特别要求,可以选择动作片、惊悚片或浪漫喜剧。"
)
name: str = Field(..., description="为这部电影取一个名字")
characters: List[str] = Field(..., description="电影中的角色名称。")
storyline: str = Field(..., description="用3句话描述电影的故事情节。让它令人兴奋!")
json_mode_agent = Agent(
model=model,
system_message="你是一个电影剧本创作者,所有回答必须使用中文。",
description="你是一个电影剧本创作者。请用中文回答所有问题。",
response_model=MovieScript,
references_format='json',
debug_mode=True,
)
Agno 代理支持文本、图像、音频和视频输入,并可生成文本、图像、音频和视频输出。
比如输出图片:
image_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[DalleTools()],
description="You are an AI agent that can generate images using DALL-E.",
instructions="When the user asks you to create an image, use the `create_image` tool to create the image.",
markdown=True,
show_tool_calls=True,
)
image_agent.print_response("Generate an image of a white siamese cat")
images = image_agent.get_images()
if images andisinstance(images, list):
for image_response in images:
image_url = image_response.url
print(image_url)
工具是代理的灵魂,在 Agno 中自定义工具也很简单。定义一个函数,写下注释即可:
def get_top_hackernews_stories(num_stories: int = 10) -> str:
"""使用此函数获取 Hacker News 的热门故事。
参数:
num_stories (int): 要返回的故事数量。默认为 10。
返回:
str: 热门故事的 JSON 字符串。
"""
# Fetch top story IDs
response = httpx.get('https://hacker-news.firebaseio.com/v0/topstories.json')
return ...
agent = Agent(
model=llm,
tools=[get_top_hackernews_stories],
debug_mode=True,
show_tool_calls=True,
markdown=True,
description="你是一个帮助用户获取和总结 Hacker News 热门故事的助手。",
instructions=["请使用中文回答所有问题", "提供简洁明了的总结"]
)
更多信息可以参考其
Agno 还提供了 PlayGround 应用[3],可以让你的应用集成监控。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-26
刚刚,OpenAI 发布生图神器狙击 Google!一句话 P 图奥特曼现场玩梗,免费能用
2025-03-26
GPT-4o 生图实测:很强(附:20+场景示例 & 缺陷整理)
2025-03-24
0.35秒OCR整页文档,比Qwen2.5 VL高出10%的文档转换多模态模型!
2025-03-24
主流多智能体框架设计原理
2025-03-21
为了致敬Manus,我做了一款产品
2025-03-21
一文搞懂多模态视觉大模型(CLIP和SAM)
2025-03-20
解读: Cline v3.5 在MCP交互上的升级 - 视觉化输出
2025-03-19
基于多模态大语言模型的 PDF 转 Markdown 工具MarkPDFDown
2024-09-12
2024-06-14
2024-08-06
2024-06-17
2024-05-30
2024-08-30
2024-10-07
2024-11-28
2024-04-21
2024-10-16