代码
cookbook/apps/playground/ollama_agents.py
Copy
from agno.agent import Agent
from agno.models.ollama import Ollama
from agno.playground import Playground
from agno.storage.sqlite import SqliteStorage
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.yfinance import YFinanceTools
from agno.tools.youtube import YouTubeTools
local_agent_storage_file: str = "tmp/local_agents.db"
common_instructions = [
"如果用户询问关于你或你的技能,请告知你的名字和角色。",
]
web_agent = Agent(
name="Web Agent",
role="搜索网络信息",
agent_id="web-agent",
model=Ollama(id="llama3.1:8b"),
tools=[DuckDuckGoTools()],
instructions=["始终包含来源。"] + common_instructions,
storage=SqliteStorage(
table_name="web_agent",
db_file=local_agent_storage_file,
auto_upgrade_schema=True,
),
show_tool_calls=True,
add_history_to_messages=True,
num_history_responses=2,
add_name_to_instructions=True,
add_datetime_to_instructions=True,
markdown=True,
)
finance_agent = Agent(
name="Finance Agent",
role="获取财务数据",
agent_id="finance-agent",
model=Ollama(id="llama3.1:8b"),
tools=[
YFinanceTools(
stock_price=True,
analyst_recommendations=True,
company_info=True,
company_news=True,
)
],
description="你是一位投资分析师,负责研究股票并帮助用户做出明智的决策。",
instructions=["始终使用表格展示数据"] + common_instructions,
storage=SqliteStorage(
table_name="finance_agent",
db_file=local_agent_storage_file,
auto_upgrade_schema=True,
),
add_history_to_messages=True,
num_history_responses=5,
add_name_to_instructions=True,
add_datetime_to_instructions=True,
markdown=True,
)
youtube_agent = Agent(
name="YouTube Agent",
role="理解 YouTube 视频并回答问题",
agent_id="youtube-agent",
model=Ollama(id="llama3.1:8b"),
tools=[YouTubeTools()],
description="你是一个 YouTube 代理,拥有理解 YouTube 视频和回答相关问题的特殊技能。",
instructions=[
"使用视频 URL,通过 `get_youtube_video_data` 工具获取视频数据,并通过 `get_youtube_video_data` 工具获取字幕。",
"根据视频数据和字幕,以引人入胜且深思熟虑的方式回答用户的问题。重点关注最重要的细节。",
"如果你在视频中找不到答案,请说明情况并请求用户提供更多详细信息。",
"保持回答简洁而引人入胜。",
]
+ common_instructions,
add_history_to_messages=True,
num_history_responses=5,
show_tool_calls=True,
add_name_to_instructions=True,
add_datetime_to_instructions=True,
storage=SqliteStorage(
table_name="youtube_agent",
db_file=local_agent_storage_file,
auto_upgrade_schema=True,
),
markdown=True,
)
playground = Playground(
agents=[web_agent, finance_agent, youtube_agent],
name="Ollama Agents",
description="Ollama 代理的游乐场",
app_id="ollama-agents",
)
app = playground.get_app(use_async=False)
if __name__ == "__main__":
playground.serve(app="ollama_agents:app", reload=True)
用法
1
创建虚拟环境
打开
Terminal
并创建一个 python 虚拟环境。Copy
python3 -m venv .venv
source .venv/bin/activate
2
安装 Ollama
请按照 Ollama.com 上的说明下载并安装 Ollama。
3
拉取模型
Copy
ollama pull llama3.1:8b
4
安装库
Copy
pip install -U "uvicorn[standard]" ollama duckduckgo-search yfinance pypdf sqlalchemy 'fastapi[standard]' youtube-transcript-api agno
5
运行代理
Copy
python cookbook/apps/playground/ollama_agents.py