AI助手

phidata

作者头像
项目作者phidatahq

Build multi-modal Agents with memory, knowledge, tools and reasoning. Chat with them using a beautiful Agent UI.

phidata 预览图

phidata 介绍

了解项目的详细信息和使用方法

什么是 phidata?

Phidata 是一个用于构建自主助手(即智能体)的框架,这些助手具有长期记忆、上下文知识和使用函数调用执行操作的能力。

使用 phidata 将任何大语言模型 (LLM) 转变为能够:

  • 使用 DuckDuckGo、Google 等搜索网络
  • 使用 SQL、DuckDb 等分析数据
  • 进行研究并生成报告
  • 从 PDF、API 等回答问题
  • 为电影、书籍等编写脚本
  • 总结文章、视频等
  • 执行任务如发送电子邮件、查询数据库等
  • 以及更多...

为什么选择 phidata?

问题: 我们需要将通用的 LLM 转变为专门为我们的用例设计的助手。

解决方案: 扩展 LLM 以具备记忆、知识和工具:

  • 记忆:聊天记录存储在数据库中,使 LLM 能够进行长期对话。
  • 知识:将信息存储在向量数据库中,为 LLM 提供业务背景
  • 工具:使 LLM 能够执行操作,如从 API 获取数据、发送电子邮件或查询数据库。

记忆和知识使 LLM 更智能,而工具使它们更具自主性

工作原理

  • 步骤 1: 创建一个 Assistant
  • 步骤 2: 添加工具(函数)、知识(向量数据库)和存储(数据库)
  • 步骤 3: 使用 Streamlit、FastApi 或 Django 来构建您的 AI 应用

安装

shell
1pip install -U phidata

快速入门

可以搜索网络的助手

创建一个文件 assistant.py

python
1from phi.assistant import Assistant 2from phi.tools.duckduckgo import DuckDuckGo 3 4assistant = Assistant(tools=[DuckDuckGo()], show_tool_calls=True) 5assistant.print_response("法国发生了什么事?", markdown=True)

安装库,导出您的 OPENAI_API_KEY 并运行 Assistant

shell
1 2 3pip install openai duckduckgo-search 4 5export OPENAI_API_KEY=sk-xxxx 6 7python assistant.py

可以查询财务数据的助手

创建一个文件 finance_assistant.py

python
1from phi.assistant import Assistant 2from phi.llm.openai import OpenAIChat 3from phi.tools.yfinance import YFinanceTools 4 5assistant = Assistant( 6 llm=OpenAIChat(model="gpt-4o"), 7 tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True)], 8 show_tool_calls=True, 9 markdown=True, 10) 11assistant.print_response("NVDA 的股价是多少?") 12assistant.print_response("撰写 NVDA 和 AMD 的比较报告,使用所有可用的工具。")

安装库并运行 Assistant

shell
1pip install yfinance 2 3python finance_assistant.py

更多信息

示例

  • LLM OS:使用 LLM 作为新兴操作系统的 CPU。
  • 自主 RAG:为 LLM 提供工具以搜索其知识、网络或聊天记录。
  • 本地 RAG:使用 Ollama 和 PgVector 的 Llama3 完全本地化的 RAG。
  • 投资研究员:使用 Llama3 和 Groq 生成股票投资报告。
  • 新闻文章:使用 Llama3 和 Groq 撰写新闻文章。
  • 视频摘要:使用 Llama3 和 Groq 对 YouTube 视频进行总结。
  • 研究助手:使用 Llama3 和 Groq 撰写研究报告。

可以编写和运行 Python 代码的助手

显示代码

PythonAssistant 可以通过编写和运行 Python 代码来完成任务。

  • 创建一个文件 python_assistant.py
python
1from phi.assistant.python import PythonAssistant 2from phi.file.local.csv import CsvFile 3 4python_assistant = PythonAssistant( 5 files=[ 6 CsvFile( 7 path="https://phidata-public.s3.amazonaws.com/demo_data/IMDB-Movie-Data.csv", 8 description="包含来自 IMDB 的电影信息。", 9 ) 10 ], 11 pip_install=True, 12 show_tool_calls=True, 13) 14 15python_assistant.print_response("电影的平均评分是多少?", markdown=True)
  • 安装 pandas 并运行 python_assistant.py
shell
1pip install pandas 2 3python python_assistant.py

可以使用 SQL 分析数据的助手

显示代码

DuckDbAssistant 可以使用 SQL 执行数据分析。

  • 创建一个文件 data_assistant.py
python
1import json 2from phi.assistant.duckdb import DuckDbAssistant 3 4duckdb_assistant = DuckDbAssistant( 5 semantic_model=json.dumps({ 6 "tables": [ 7 { 8 "name": "movies", 9 "description": "包含来自 IMDB 的电影信息。", 10 "path": "https://phidata-public.s3.amazonaws.com/demo_data/IMDB-Movie-Data.csv", 11 } 12 ] 13 }), 14) 15 16duckdb_assistant.print_response("电影的平均评分是多少?显示 SQL。", markdown=True)
  • 安装 duckdb 并运行 data_assistant.py 文件
shell
1pip install duckdb 2 3python data_assistant.py

可以生成 pydantic 模型的助手

显示代码

我们最喜欢的 LLM 功能之一是从文本生成结构化数据(即 pydantic 模型)。使用此功能可以提取特征、生成电影脚本、生成假数据等。

让我们创建一个 Movie Assistant 来为我们编写 MovieScript

  • 创建一个文件 movie_assistant.py
python
1from typing import List 2from pydantic import BaseModel, Field 3from rich.pretty import pprint 4from phi.assistant import Assistant 5 6class MovieScript(BaseModel): 7 setting: str = Field(..., description="为一部大片提供一个美好的背景。") 8 ending: str = Field(..., description="电影的结局。如果没有提供,提供一个快乐的结局。") 9 genre: str = Field(..., description="电影的类型。如果没有提供,选择动作、惊悚或浪漫喜剧。") 10 name: str = Field(..., description="为这部电影取一个名字。") 11 characters: List[str] = Field(..., description="这部电影中的角色名称。") 12 storyline: str = Field(..., description="电影的三句话故事情节。让它令人兴奋!") 13 14movie_assistant = Assistant( 15 description="你帮助编写电影脚本。", 16 output_model=MovieScript, 17) 18 19pprint(movie_assistant.run("New York"))
  • 运行 movie_assistant.py 文件
shell
1python movie_assistant.py
  • 输出是 MovieScript 类的对象,如下所示:
shell
1MovieScript( 2setting='繁华而充满活力的纽约市', 3ending='主角拯救了城市,并与疏远的家人和解。', 4genre='动作', 5name='City Pulse', 6characters=['Alex Mercer', 'Nina Castillo', 'Detective Mike Johnson'], 7storyline='在纽约市的中心,前警察变成了义务警员,Alex Mercer 与街头聪明的活动家 Nina Castillo 联手打击威胁摧毁城市的腐败政治人物。在穿越权力和欺骗的错综复杂的网络时,他们发现了令人震惊的真相,这些真相将他们推向了能力的极限。随着时间的流逝,他们必须争分夺秒地拯救纽约并面对自己的恶魔。' 8)

使用知识和存储的 PDF 助手

显示代码

让我们创建一个可以回答 PDF 问题的 PDF 助手。我们将使用 PgVector 作为知识和存储。

**知识库:**助理可以搜索的信息以改进其响应(使用向量数据库)。

**存储:**为助手提供长期记忆(使用数据库)。

  1. 运行 PgVector

安装 docker 桌面版 并使用以下命令在端口 5532 上运行 PgVector

bash
1docker run -d \ 2 -e POSTGRES_DB=ai \ 3 -e POSTGRES_USER=ai \ 4 -e POSTGRES_PASSWORD=ai \ 5 -e PGDATA=/var/lib/postgresql/data/pgdata \ 6 -v pgvolume:/var/lib/postgresql/data \ 7 -p 5532:5432 \ 8 --name pgvector \ 9 phidata/pgvector:16
  1. 创建 PDF 助手
  • 创建一个文件 pdf_assistant.py
python
1import typer 2from typing import Optional, List 3from phi.assistant import Assistant 4from phi.storage.assistant.postgres import PgAssistantStorage 5from phi.knowledge.pdf import PDFUrlKnowledgeBase 6from phi.vectordb.pgvector import PgVector2 7 8db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai" 9 10knowledge_base = PDFUrlKnowledgeBase( 11 urls=["https://phi-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"], 12 vector_db=PgVector2(collection="recipes", db_url=db_url), 13) 14# 第一次运行后注释掉 15knowledge_base.load() 16 17storage = PgAssistantStorage(table_name="pdf_assistant", db_url=db_url) 18 19 20def pdf_assistant(new: bool = False, user: str = "user"): 21 run_id: Optional[str] = None 22 23 if not new: 24 existing_run_ids: List[str] = storage.get_all_run_ids(user) 25 if len(existing_run_ids) > 0: 26 run_id = existing_run_ids[0] 27 28 assistant = Assistant( 29 run_id=run_id, 30 user_id=user, 31 knowledge_base=knowledge_base, 32 storage=storage, 33 # 在响应中显示工具调用 34 show_tool_calls=True, 35 # 使助手能够搜索知识库 36 search_knowledge=True, 37 # 使助手能够读取聊天记录 38 read_chat_history=True, 39 ) 40 if run_id is None: 41 run_id = assistant.run_id 42 print(f"开始运行:{run_id}\n") 43 else: 44 print(f"继续运行: 45 46{run_id}\n") 47 48 # 以 CLI 应用程序运行助手 49 assistant.cli_app(markdown=True) 50 51 52if __name__ == "__main__": 53 typer.run(pdf_assistant)
  1. 安装库
shell
1pip install -U pgvector pypdf "psycopg[binary]" sqlalchemy
  1. 运行 PDF 助手
shell
1python pdf_assistant.py
  • 提问:
怎么做泰式炒河粉?
  • 查看助手如何搜索知识库并返回响应。

  • 消息 bye 退出,再次使用 python pdf_assistant.py 启动助手并询问:

我上条消息是什么?

查看助手现在如何在会话之间保持存储。

  • 使用 --new 标志运行 pdf_assistant.py 文件以开始新运行。
shell
1python pdf_assistant.py --new

查看 cookbook 获取更多示例。

下一步

  1. 阅读 基础 了解更多关于 phidata 的信息。
  2. 阅读 助手 以及如何定制它们。
  3. 查看 cookbook 获取深入的示例和代码。

演示

查看以下使用 phidata 构建的 AI 应用:

  • PDF AI 总结和回答 PDF 的问题。
  • ArXiv AI 使用 ArXiv API 回答有关 ArXiv 论文的问题。
  • HackerNews AI 总结故事、用户并分享 HackerNews 上的新内容。
Stars
18.2k
Forks
2.5k
Watch
127
版本 v2.7.9
Mozilla Public License 2.0
更新于 2025年1月25日
agents, ai, developer-tools, python
免责声明:本站大资源来自网络收集整理,小部分资源来自原创,如有侵权等,请联系处理。

相关项目

探索更多类似的开源项目