介绍 Phidata
Phidata 是一个尖端的框架,专为开发具有超越传统语言模型能力的自治助手(或称为代理)而设计。这些 AI 助手拥有长期记忆、深入的情境理解能力以及通过函数调用执行操作的能力,使它们在各种应用中非常有效。项目近期在Github上非常火爆:https://github.com/phidatahq/phidata/blob/main/README.md
传统 LLM 的挑战
传统的大型语言模型(LLMs)常常在理解上下文和执行动作能力方面存在限制,这限制了它们在需要做出决策和操作外部数据源的动态真实世界应用中的实用性。
Phidata 的解决方案:记忆、知识和工具
Phidata 通过整合三个核心增强功能来解决这些缺点:
- 记忆:Phidata 允许在数据库中存储聊天历史,使 AI 能够维持长期对话并回忆过去的互动。
- 知识:通过在向量数据库中存储信息,Phidata 为 AI 提供了业务相关的上下文,增强了其回应的相关性和准确性。
- 工具:此功能赋予 AI 执行操作的能力,如通过 API 获取数据、发送电子邮件或执行数据库查询。
Phidata 的工作原理
设置基于 Phidata 的助手涉及三个主要步骤:
- 创建助手
- 整合工具,如用于动态交互的 API 或数据库。
- 部署使用像 Streamlit、FastAPI 或 Django 这样的平台来服务 AI 应用。
安装和快速入门指南
开始使用 Phidata 非常简单,通过 pip 进行安装:
pip install -U phidata
这是一个设置能进行网页搜索的助手的快速示例:
from phi.assistant import Assistant
from phi.tools.duckduckgo import DuckDuckGo
assistant = Assistant(tools=[DuckDuckGo()], show_tool_calls=True)
assistant.print_response("法国最近发生了什么事?", markdown=True)
这个简单的设置示例展示了如何将一个基础脚本转变为一个能与网络资源互动的强大助手。
实际应用和高级功能
Phidata 的多功能性在其广泛的 cookbook 中得到展示,包括以下示例:
- AI 驱动的投资研究员
- 新闻文章编写器
- YouTube 视频摘要
此外,Phidata 支持生成 Pydantic 模型或使用 SQL 进行数据分析等特殊任务,增强了其在数据驱动环境中的适用性。
示例:PDF分析助手
以下是设置用于分析PDF文档:
import typer
from rich.prompt import Prompt
from typing import Optional, List
from phi.assistant import Assistant
from phi.storage.assistant.postgres import PgAssistantStorage
from phi.knowledge.pdf import PDFUrlKnowledgeBase
from phi.vectordb.pgvector import PgVector2
db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
knowledge_base = PDFUrlKnowledgeBase(
urls=["https://phi-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
vector_db=PgVector2(collection="recipes", db_url=db_url),
)
# Comment out after first run
knowledge_base.load()
storage = PgAssistantStorage(table_name="pdf_assistant", db_url=db_url)
def pdf_assistant(new: bool = False, user: str = "user"):
run_id: Optional[str] = None
if not new:
existing_run_ids: List[str] = storage.get_all_run_ids(user)
if len(existing_run_ids) > 0:
run_id = existing_run_ids[0]
assistant = Assistant(
run_id=run_id,
user_id=user,
knowledge_base=knowledge_base,
storage=storage,
# Show tool calls in the response
show_tool_calls=True,
# Enable the assistant to search the knowledge base
search_knowledge=True,
# Enable the assistant to read the chat history
read_chat_history=True,
)
if run_id is None:
run_id = assistant.run_id
print(f"Started Run: {run_id}\n")
else:
print(f"Continuing Run: {run_id}\n")
# Runs the assistant as a cli app
assistant.cli_app(markdown=True)
if __name__ == "__main__":
typer.run(pdf_assistant)
这段代码可以发现,构建一个pdf分析助手变得非常简洁,不需要自己配置复杂的数据库以及大模型交互逻辑。
总结
利用Phidata可以快速构建一个满足业务需求的基于大模型的智能助理,快来试试吧。