Phidata:快速构建一个智能 AI 助手【附代码示例】

介绍 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 的助手涉及三个主要步骤:

  1. 创建助手
  2. 整合工具,如用于动态交互的 API 或数据库。
  3. 部署使用像 Streamlit、FastAPI 或 Django 这样的平台来服务 AI 应用。

安装和快速入门指南

开始使用 Phidata 非常简单,通过 pip 进行安装:

pip install -U phidata

这是一个设置能进行网页搜索的助手的快速示例:

from phi.assistant import Assistant
from phi.tools.duckduckgo import DuckDuckGoassistant = 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 PgVector2db_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] = Noneif 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 responseshow_tool_calls=True,# Enable the assistant to search the knowledge basesearch_knowledge=True,# Enable the assistant to read the chat historyread_chat_history=True,)if run_id is None:run_id = assistant.run_idprint(f"Started Run: {run_id}\n")else:print(f"Continuing Run: {run_id}\n")# Runs the assistant as a cli appassistant.cli_app(markdown=True)if __name__ == "__main__":typer.run(pdf_assistant)

这段代码可以发现,构建一个pdf分析助手变得非常简洁,不需要自己配置复杂的数据库以及大模型交互逻辑。

总结

利用Phidata可以快速构建一个满足业务需求的基于大模型的智能助理,快来试试吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707124.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ansys Mechanical|中远程点的Behavior该如何设置?

Remote point是ANSYS mechanical中的一种常见节点自由度耦合建模形式,在转动装配体中的连接转动副、或者在施加远端约束及远端载荷的时候,我们经常用到远端单元来耦合一个面或者一条线。例如销轴似的滚动摩擦连接,如果我们希望将两个物体通过…

python 六句话让电脑告诉你,刚才插入的串口编号

六句话让电脑告诉你,我的串口号 第一步,安装python 编译器以及pyserial 模块第二步,写入代码 import serial.tools.list_ports usart_list list(serial.tools.list_ports.comports()) input("Please insert your serial port:")…

中国人民大学金融硕士为什么在年复一年中持续不断升温?原来是因为这些

中国人民大学作为中国顶尖的高等学府之一,对于金融行业这个及其看中出身的行业,选择985、211院校读金融硕士那一定是最优选择,但难度也是可想而知的。好在中国人民大学现在针对金融硕士的就读方式有很多,如果本校硕士有难度&#…

英才璀璨 助梦起航,KCM Trade首届澳大利亚模拟投资大赛圆满收官

在金融领域,理论与实践往往有着天壤之别,实战经验对于理解市场的动态和培养投资技能至关重要。为了弥补这一差距,KCM Trade在2024年3月18日至29日举办了一场为期两周的首届澳大利亚大学生模拟投资大赛。此次大赛不仅是对参赛者分析判断能力及…

MyBatis操作数据库(动态SQL)

1 动态SQL 动态SQL是MyBatis的特征之一&#xff0c;能够完成不同条件下不同的SQL拼接 1.1 <if>标签 在注册用户的时候&#xff0c;可能会有这样一个问题&#xff0c;由于注册分为两种字段&#xff1a;必填字段和非必填字段&#xff0c;如果在添加用户的时候有不确定的…

TMC4671超越传感器和摄像头之外——将物联网从云端转移到现实世界[应用案例]

在早期&#xff0c;物联网 (IoT) 在很大程度上充当了云端服务的“眼睛和耳朵”&#xff0c;收集传感器、摄像头和其他物理世界输入设备的数据&#xff0c;而不太注重操纵或控制它所监视的事物。支持物联网的自动化和机器人应用已经开始合并&#xff0c;但是一般而言&#xff0c…

小白git

克隆 &#xff1a;git clone 链接地址 如果没有.git文件的话&#xff1a;git init 切换分支&#xff1a;cd 目录 拉代码&#xff1a;git pull 查看你自己改了那些文件&#xff1a;git status 添加道本地暂存区&#xff1a;git add * 提交到远端&#xff1a;git commit …

Redis基于Redisson的限流和限流算法

限流 限流是在高并发或者某个瞬间高并发时&#xff0c;为了保证系统的稳定性&#xff0c;对超出服务处理能力之外的请求进行拦截&#xff0c;对访问服务的流量进行限制。 常见的限流算法有四种&#xff1a;固定窗口限流算法、滑动窗口限流算法、漏桶限流算法和令牌桶限流算法…

Java 自动生成数据库设计文档

背景&#xff1a;有时候急需要数据库设计文档&#xff0c;手写太麻烦&#xff0c;这里介绍一款开源组件&#xff0c;可以自动根据数据库连接生成数据库设计文档 废话不多说&#xff0c;直接上代码 导入maven包 <dependency><groupId>org.freemarker</groupId>…

openGauss一主两备集群异常断电后不能正常启动的解决过程简记

背景 因异常断电后opengauss 5.0.0版本&#xff0c;一主两备集群启动失败。 报错不是主机&#xff0c;由于当时没有截图&#xff0c;查看日志后发现报错是&#xff1a; 定位过程 Day1 1. 尝试用另外两台机器启动每台机器 发现都报错自己不是主机&#xff0c;像极了唐僧被妖…

计算机网络-路由策略与路由控制一

到目前为止我们学习了路由与交换基础&#xff0c;路由协议有静态、RIP、OSPF、IS-IS等&#xff0c;但是根据实际组网需求&#xff0c;往往需要实施一些路由策略对路由信息进行过滤、属性设置等操作&#xff0c;通过对路由的控制&#xff0c;可以影响数据流量转发。 因此我们开始…

webpack优化构建速度示例-IgnorePlugin:

IgnorePlugin是webpack的一个内置插件&#xff0c;允许你忽略某些特定的模块或文件 webpack.config.jsconst config {entry: ./src/index.js,output: {filename: main.js},mode: development, }module.exports config;src/index.js import moment from moment console.log(mo…