先启动环境:
PS E:\development> uv init agno_demo1
Initialized project `agno-demo1` at `E:\development\agno_demo1`
PS E:\development> cd .\agno_demo1\
PS E:\development\agno_demo1> uv venv
Using CPython 3.12.8
Creating virtual environment at: .venv
Activate with: .venv\Scripts\activate
PS E:\development\agno_demo1> .venv\Scripts\activate
(agno_demo1) PS E:\development\agno_demo1>https://docs.agno.com/get-started/agents
uv add openai agno然后安装依赖
接着接入ds:
https://docs.agno.com/models/deepseek
# -----------------------------------------------------------------------------
# 使用 PowerShell
# 打开 PowerShell(在 “开始” 菜单中搜索 “PowerShell” 并打开)。
# 要为当前用户设置环境变量,可以使用
# $env:SILICONFLOW_API_KEY = "your_api_key"
# 命令。
# 同样,将"your_api_key"替换为实际的 API 密钥。不过,这种方式设置的环境变量只在当前 PowerShell 会话中有效。
# 要永久设置环境变量(对于当前用户),可以使用
# [Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY","your_api_key","User")。
# 如果要设置系统级别的环境变量(需要管理员权限),可以将最后一个参数改为"Machine",
# 例如
# [Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY","your_api_key","Machine")。
# Set up SILICONFLOW API key
# 记得使用以上方法后,需要关闭vscode后重启vscode,之后点击F5运行python脚本的时候才能生效其实就是执行这一句:
[Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY","xxxxxxxxxx","Machine")里面填写的是火山的key哈
from agno.agent import Agent, RunResponse
from agno.models.deepseek import DeepSeek
#litellm初始化火山引擎的方法
#V3的模型
# llm = LLM(model="volcengine/ep-20250204220334-l2q5g",
# api_key=huoshan_key,temperature=0)
#R1的模型
# llm = LLM(model="volcengine/ep-20250204215316-p8rqb",
# api_key=huoshan_key,temperature=0)
# 使用 PowerShell
# 打开 PowerShell(在 “开始” 菜单中搜索 “PowerShell” 并打开)。
# 要为当前用户设置环境变量,可以使用
# $env:SILICONFLOW_API_KEY = "your_api_key"
# 命令。
# 同样,将"your_api_key"替换为实际的 API 密钥。不过,这种方式设置的环境变量只在当前 PowerShell 会话中有效。
# 要永久设置环境变量(对于当前用户),可以使用
# [Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY","your_api_key","User")。
# 如果要设置系统级别的环境变量(需要管理员权限),可以将最后一个参数改为"Machine",
# 例如
# [Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY","your_api_key","Machine")。
# Set up SILICONFLOW API key
# 记得使用以上方法后,需要关闭vscode后重启vscode,之后点击F5运行python脚本的时候才能生效
ds_model = DeepSeek(id="ep-20250204220334-l2q5g",base_url="https://ark.cn-beijing.volces.com/api/v3/")
agent = Agent(model=ds_model, markdown=True)
# Print the response in the terminal
agent.print_response("Share a 2 sentence horror story.")
OK,跑起来了,而且还很轻松
输出很有趣啊,哈哈,很友好
https://docs.agno.com/get-started/playground
from agno.playground import Playground, serve_playground_app
app = Playground(agents=[agent]).get_app()
if __name__ == "__main__":
serve_playground_app("hello:app", reload=True)有两个要点:
1、serve_playground_app("hello:app", reload=True)
这一句里,hello是python的文件名,app是应用的指针
2、需要安装一个依赖
uv add 'fastapi[standard]'ag setup先ag setup,然后就会登录到agno那边的官网上去,然后你就登录



然后右边就可以看到所有的东西,包括绑定的Tools,存储、记忆体、知识库
快速调试来说,真的方便啊
debug_mode=True,
add_datetime_to_instructions=True,
add_history_to_messages=True,
num_history_responses=5,接着我给agent加上最简单的几条记忆相关的
给提示词里加上时间
加上history
但是发现光加这几句还不行。。看来对方的history是默认必须用存储来表达
那继续抄
from agno.storage.agent.sqlite import SqliteAgentStorage
agent_storage: str = "tmp/agents.db"
storage=SqliteAgentStorage(table_name="tai_agent", db_file=agent_storage),
加上了三句话,第一句是引用,第二句声明了数据库,第三句,给agent加上表名
然后报错了:
uv add sqlalchemy加上sql的依赖

启动成功,看到Storage不为空了

SESSIONS
也不为空了,只是我还没聊天而已

我看了看它的表设计,其实还是可以的
有user_id的概念,所以本质上还是OK的
-------------------
用FastAPI快速包装
https://docs.agno.com/how-to/local-docker-guide
它也有指引,不过这些都不带所谓的User的概念的,所以需要自己去封装好
---------------------

我看了一下,它起码有chunking策略这个东西
--------------------------------------
结论:还可以,确实如它自我定位的那样,这个框架是速度很快,上手的友好度不错,有user、sessions的概念,另外不是对很多库的再封装,比如crewai那样,RAGTool其实看上去很美,但却是对一个叫做embedchain的库的adapter而已
当然有小伙伴说,这个库的RAG部分也就那样了,确实
说实话,要和准商业级的东西比,这类框架就是起个头儿而已,对不对,但安装的时候很快就能看出来,大概率也很薄
作为一个快速的开始,还是可以的
metagpt那边文档太差了,可能更强调底层能力,autogen感觉略微有点重,底部带了一整个的actor的订阅分发模型/metagpt其实也有,crewai那边文档各方面看上去很美,但对deepseek的支持,以及工具库里的东西,未免有些太多了,而且不少只是简单的adapter,并且糟糕的地方是,embedchain那个库,我看上去文档也很糟糕,几乎没有揭露怎么深入的去定制化,记忆体那块,有点不知所言,且昨天也遇到了无法保存长期记忆的问题,不是很透明的感觉,crewai那边似乎想刻意的傻瓜化,但这其实很难平衡,它在某些方面感觉做的有点过了。
好歹agno这边,还开了最重要的那一步,就是chunking的策略
但看商业的RAG观察下来,几乎都需要对整个RAG做细节优化,非常的卷,要让这些开源的agent库能和这些东西融合,其实很困难,估计最后就只能令启一个tool的文件,去抽象出各个子过程了
好在我这个阶段想做的东西,和RAG关系不大....那里真的是一个巨大的坑,慢慢用手头的一些论文和多摸摸商业化的产品然后去补足手头的家伙事儿吧,没辙
不过,话说回来,因为agno这东西比较薄,所以写起来也就是比openai的那个python库要方便一丢丢,这样也好,只用里面最基础的一些方便的东西,复杂的,还得自己搞,看来,逃不过去。