支持私有云部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


轻量级多模态代理框架 Agno 像搭乐高一样构建私有化AGI中台

发布日期:2025-03-20 07:48:45 浏览次数: 1612 来源:数翼
推荐语

构建私有化AI中台的新选择,像搭乐高一样轻松搭建高性能AI代理。

核心内容:
1. Agno框架的全面功能和简易使用方式
2. 无缝集成大型语言模型,管理代理状态和内存
3. 用Agno构建特定领域AI代理的实践案例与应用场景

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

Agno 是一个开源框架, 旨在创建具有记忆、知识保留、工具集成和复杂推理等功能的高级 AI 代理。 它使开发人员能够无缝集成任何大型语言模型 (LLM), 管理代理的状态和内存,甚至协调多个协同工作的代理。

Agno 的真正力量在于它能够构建高性能、 特定领域的 AI 代理 ,并提供在生产中监控和优化它们的工具。 由于其足够简单,所以在你的业务场景中集成 Agno 几乎感受不到什么影响。

任何你能想到的场景,都可以方便使用 Agno 实现,比如:

  • • OA 里面自动审批和报告
  • • 项目中自动完善和处理需求
  • • 物流中订单追踪
  • • 通用数据处理、BI等

人工智能工程就是软件工程

从官方的角度看,Agno 适用于哪些场景呢?

如果你在构建 AI 产品时,

  • • 解决方案的 80% 将是标准的 Python 代码
  • • 其余 20% 将使用 Agents 实现自动化
    • • 说是 20%,我都觉得多了,我使用下来,知识在需要智能体的地方写一两行代码就可以了。

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)

更复杂的一个例子,你可以设置代理的 descriptioninstructionsexpected_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,
)
  • • description 会加在系统提示词的前面;

结构化输出

另一个特别有用的功能是结构化输出,这比你手写 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=["请使用中文回答所有问题""提供简洁明了的总结"]
)

更多信息可以参考其

  • • 文档: https://docs.agno.com/introduction[1]
  • • 例子: https://docs.agno.com/examples/introduction[2]

Agno 还提供了 PlayGround 应用[3],可以让你的应用集成监控。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询