开源智能体系列主要是介绍目前市面上开源的智能体框架,如CrewAI、AutoGen、LangChain、phidata、Swarm等,介绍它们的优缺点、功能特性、效果和用法等。
感兴趣的朋友可以关注公众号"XiaozhiAGI",将持续输出关于RAG、Agent、Agentic workflow、AGI等人工智能前沿技术、产品动态。
phidata
Phidata 是一个构建多模式代理的框架,构建具有记忆、知识、工具和推理能力的多模式代理。使用 phidata 可以:
● 构建具有记忆、知识、工具和推理能力的多模式代理。
● 建立可以共同解决问题的代理团队。
● 使用漂亮的代理 UI 与您的代理聊天。
1.安装
pip install -U phidata
2.特点
● 多模态支持:支持文本、图像、音频和视频等多种数据格式。
● 协作代理团队:允许多个代理协同工作,完成复杂任务。
● 优雅用户界面:提供直观的用户界面,使用户与代理间的互动自然流畅。
● 结构化输出:代理的响应结果采用结构化格式展示,提升结果的可用性与可读性。
● 监控与调试功能:内置监控与调试工具,帮助开发者实时追踪代理表现,确保应用高效顺畅运行。
3.创新
Phidata通过其独特的记忆、知识和工具集成,创新性地增强了LLM的能力,使其不仅能够理解和响应用户需求,还能够提供调试的UI页面、监控日志、执行具体的操作,如数据查询、API调用等。
4.参考样例
4.1.网页搜索
web_search.py
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo
web_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGo()],
instructions=["Always include sources"],
show_tool_calls=True,
markdown=True,
)
web_agent.print_response("Tell me about OpenAI Sora?", stream=True)
依赖包安装
pip install phidata openai duckduckgo-search
api key 设置
Linux:
export OPENAI_API_KEY=sk-xxxx
window:
import os
os.environ['OPENAI_API_KEY'] = 'xxx'
运行代码
python web_search.py
4.2.多模态问答
添加图片,然后对图片中内容进行问答
image_agent.py
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGo()],
markdown=True,
)
agent.print_response(
"Tell me about this image and give me the latest news about it.",
images=["https://upload.wikimedia.org/wikipedia/commons/b/bf/Krakow_-_Kosciol_Mariacki.jpg"],
stream=True,
)
运行代码
python image_agent.py
4.3.RAG问答
rag_agent.py
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.embedder.openai import OpenAIEmbedder
from phi.knowledge.pdf import PDFUrlKnowledgeBase
from phi.vectordb.lancedb import LanceDb, SearchType
# Create a knowledge base from a PDF
knowledge_base = PDFUrlKnowledgeBase(
urls=["https://phi-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
# Use LanceDB as the vector database
vector_db=LanceDb(
table_name="recipes",
uri="tmp/lancedb",
search_type=SearchType.vector,
embedder=OpenAIEmbedder(model="text-embedding-3-small"),
),
)
# Comment out after first run as the knowledge base is loaded
knowledge_base.load()
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
# Add the knowledge base to the agent
knowledge=knowledge_base,
show_tool_calls=True,
markdown=True,
)
agent.print_response("How do I make chicken and galangal in coconut milk soup", stream=True)
运行代码
# 安装:pip install lancedb tantivy pypdf sqlalchemy
python rag_agent.py
4.4.Agent-Ui和多智能体协作
playground.py
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.storage.agent.sqlite import SqlAgentStorage
from phi.tools.duckduckgo import DuckDuckGo
from phi.tools.yfinance import YFinanceTools
from phi.playground import Playground, serve_playground_app
web_agent = Agent(
name="Web Agent",
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGo()],
instructions=["Always include sources"],
storage=SqlAgentStorage(table_name="web_agent", db_file="agents.db"),
add_history_to_messages=True,
markdown=True,
)
finance_agent = Agent(
name="Finance Agent",
model=OpenAIChat(id="gpt-4o"),
tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True)],
instructions=["Use tables to display data"],
storage=SqlAgentStorage(table_name="finance_agent", db_file="agents.db"),
add_history_to_messages=True,
markdown=True,
)
app = Playground(agents=[finance_agent, web_agent]).get_app()
if __name__ == "__main__":
serve_playground_app("playground:app", reload=True)
先进行认证:在终端运行下面命令
# 认证
phi auth
# PHI api key
export PHI_API_KEY=phi-***
或者直接去网页注册登录:https://www.phidata.app/,配置好可以进行运行代码
# 安装:pip install 'fastapi[standard]' sqlalchemy
python playground.py
打开提供的链接或访问http://phidata.app/playground,选择localhost:7777端点并开始与智能体聊天。
还有很多样例,可以去访问官方文档:https://github.com/phidatahq/phidata
5.Phidata的作用
增强记忆能力
Phidata通过在数据库中存储聊天历史,使LLMs能够进行长期对话,记住与用户的交互历史和上下文,从而提供连贯和个性化的交流体验。这种记忆功能极大地提升了用户体验,使得智能助手能够提供更持续和相关的回答,适用于需要多轮对话的应用场景。
提供丰富的知识
Phidata通过向量数据库存储关键信息,为LLMs提供了必要的业务知识和上下文,支持模型理解和处理更复杂的查询和任务。这种知识整合功能使得智能助手能够处理更专业和业务相关的任务,如金融分析、医疗咨询等,提高了其在特定领域的实用性。
集成多种工具
Phidata集成了多种工具,使LLMs能够执行具体操作,例如从API拉取数据、发送电子邮件、查询数据库等。这些工具功能扩展了LLMs的实用性,使其能够在各种情景下自动执行任务,如自动化报告生成、数据检索等,大大提高了工作效率。
支持多模态交互
Phidata支持多种数据处理,包括文本、图像、音频和视频,能够处理各种数据格式,为用户提供丰富的交互体验。多模态支持使得智能助手能够处理更复杂和多样化的任务,如图像识别、语音处理等,进一步提升了其应用范围和用户体验。
促进智能体协作
Phidata允许创建多个代理,这些代理可以协同工作以完成更复杂的任务,支持团队协同工作。这种协作功能使得智能助手能够处理更复杂的业务场景,如项目管理、团队决策等,提高了系统的整体效能。
6.Phidata的缺陷
依赖外部服务
Phidata需要与Streamlit、FastApi或Django等服务集成以构建AI应用程序,这可能增加了一些复杂性。对外部服务的依赖可能会增加系统的复杂性和维护成本,特别是在需要快速部署和灵活配置的应用场景中。
上手难度
虽然Phidata提供了详细的文档和指南,但对于初学者来说,理解和配置这些工具仍可能有一定的难度。上手难度可能会限制某些开发者的使用意愿和效率,特别是那些没有相关经验的开发者。
功能和稳定性
作为一个新的工具,Phidata可能在一些功能和稳定性上不如一些成熟的AI开发工具。新工具在功能和稳定性上的不足可能会影响其在实际应用中的表现,需要持续改进和优化。
7.总结
Phidata通过增强记忆、知识和工具功能,显著提升了大型语言模型的能力,使其在上下文理解和行动能力方面更加出色。然而,其对外部服务的依赖、上手难度以及功能和稳定性上的不足,是需要开发者注意的问题。总体而言,Phidata为构建高效、智能的AI助手提供了一个强大的框架,具有广泛的应用前景。
8.参考资料
Phidata GitHub:https://github.com/phidatahq/phidata
Phidata 文档:https://docs.phidata.com/
https://blog.youkuaiyun.com/ymm_ohh/article/details/143224958
https://blog.youkuaiyun.com/weixin_36829761/article/details/144177962
https://mp.weixin.qq.com/s?__biz=MjM5NTg1ODg1OA==&mid=2459542215&idx=1&sn=afeec1b0980a7f40334c3b9aad3f25a3&chksm=b0496bee6e4eaa9d3df35c6471f6305accf838cc934561b4680f905506752673fcc214ae84ae#rd