MLMs之Agent:Phidata的简介、安装和使用方法、案例应用之详细攻略

MLMs之Agent:Phidata的简介、安装和使用方法、案例应用之详细攻略

目录

Phidata简介

Phidata安装和使用方法

1、安装

2、使用方法

(1)、认证

(2)、创建 Agent

(3)、运行 Agent

(4)、Agent Playground

Phidata 案例应用

1、多工具 Agent

2、多模态 Agent

3、多 Agent 协同

4、Agentic RAG

5、结构化输出

6、推理 Agent

7、Python 代码 Agent

8、SQL 数据分析 Agent

9、监控和调试


Phidata简介

2023年11月,Phidata是一个用于构建多模态智能体的框架,它允许你构建具有记忆知识工具推理能力的多模态智能体,并通过一个美观的Agent UI与它们进行交互。Phidata 的核心优势在于其简洁优雅的设计、强大的灵活性和多模态特性,支持文本、图像、音频和视频等多种数据类型。它还支持多智能体协同工作,内置Agentic RAG(基于智能体的检索增强生成)功能,并提供结构化输出和推理能力。Phidata 不存储任何数据,所有智能体数据都存储在本地 SQLite 数据库中。

Phidata 提供了一个功能强大且易于使用的框架,用于构建各种类型的多模态智能体,并支持多种高级功能,例如多 Agent 协同、Agentic RAG 和结构化输出。 其提供的示例和文档也十分完善,方便用户快速上手和进行开发。

GitHub地址:https://github.com/phidatahq/phidata

pip install -U phidata

Phidata安装和使用方法

1、安装

安装 Phidata 非常简单,只需使用 pip 命令:

pip install -U phidata

pip install phidata openai duckduckgo-search

2、使用方法

Phidata 的使用方法主要体现在构建和运行各种类型的 Agent。以下是一些示例:

(1)、认证

在使用 Phidata Playground 之前,需要进行身份验证。可以通过运行 phi auth 命令或从 phidata.app 导出 PHI_API_KEY 环境变量来完成身份验证。

(2)、创建 Agent

Phidata 提供了丰富的 API 来创建各种功能的 Agent。 核心在于使用 phi.agent.Agent 类,并配置其模型、工具、指令、存储等参数。例如,创建一个简单的网络搜索 Agent:

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)

这段代码创建了一个名为 web_agent 的 Agent,使用 OpenAI 的 gpt-4o 模型,并使用了 DuckDuckGo 作为搜索工具。instructions 指定了 Agent 的指令,show_tool_calls 和 markdown 控制输出格式。

(3)、运行 Agent

创建 Agent 后,可以直接运行其 print_response 方法来与 Agent 交互。 需要安装相应的库,例如 openai 和 duckduckgo-search。 运行代码前,请确保已设置 OPENAI_API_KEY 环境变量。

export OPENAI_API_KEY=sk-xxxx
python web_search.py

(4)、Agent Playground

Phidata 提供了一个 Agent Playground,用于方便地与多个 Agent 交互。 需要运行 playground.py 文件启动 Playground,然后访问指定的 URL (例如 http://localhost:7777) 与 Agent 进行交互。

Phidata 案例应用

Phidata 提供了多个案例,展示了其强大的功能:

1、多工具 Agent

Phidata Agent 可以使用多个工具并遵循指令来完成复杂的任务。例如,一个金融 Agent 可以使用 YFinanceTools 查询金融数据:

# finance_agent.py 的代码 (已在问题描述中提供)

from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.yfinance import YFinanceTools

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"],
    show_tool_calls=True,
    markdown=True,
)
finance_agent.print_response("Summarize analyst recommendations for NVDA", stream=True)

2、多模态 Agent

Phidata Agent 默认支持文本、图像、音频和视频等多种模态。例如,一个图像 Agent 可以理解图像并根据需要进行工具调用:

# 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,
)

3、多 Agent 协同

Phidata Agent 可以协同工作以完成复杂的任务。例如,一个团队由网络搜索 Agent 和金融 Agent 组成,共同完成任务:

# agent_team.py 的代码 (已在问题描述中提供)

from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo
from phi.tools.yfinance import YFinanceTools

web_agent = Agent(
    name="Web Agent",
    role="Search the web for information",
    model=OpenAIChat(id="gpt-4o"),
    tools=[DuckDuckGo()],
    instructions=["Always include sources"],
    show_tool_calls=True,
    markdown=True,
)

finance_agent = Agent(
    name="Finance Agent",
    role="Get financial data",
    model=OpenAIChat(id="gpt-4o"),
    tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True)],
    instructions=["Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)

agent_team = Agent(
    team=[web_agent, finance_agent],
    model=OpenAIChat(id="gpt-4o"),
    instructions=["Always include sources", "Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)

agent_team.print_response("Summarize analyst recommendations and share the latest news for NVDA", stream=True)

4、Agentic RAG

Phidata 引入了 Agentic RAG,允许 Agent 在其知识库中搜索特定信息,从而提高响应质量并节省 token。

# 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)

5、结构化输出

Agent 可以返回结构化输出,例如使用 Pydantic 模型:

# structured_output.py 的代码 (已在问题描述中提供)

6、推理 Agent

Phidata 提供了实验性的推理功能,帮助 Agent 分步解决问题。

# reasoning_agent.py 的代码 (已在问题描述中提供)

7、Python 代码 Agent

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

# python_agent.py 的代码 (已在问题描述中提供)

8、SQL 数据分析 Agent

DuckDbAgent 可以使用 SQL 进行数据分析。

# data_analyst.py 的代码 (已在问题描述中提供)

9、监控和调试

Phidata 内置了监控和调试功能,方便用户跟踪 Agent 的运行状态和调试问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习实战入门项目】使用深度学习创建您自己的表情符号

深度学习项目入门——让你更接近数据科学的梦想 表情符号或头像是表示非语言暗示的方式。这些暗示已成为在线聊天、产品评论、品牌情感等的重要组成部分。这也促使数据科学领域越来越多的研究致力于表情驱动的故事讲述。 随着计算机视觉和深度学习的进步,现在可以…

【ArcGIS微课1000例】0140:总览(鹰眼)、放大镜、查看器的用法

文章目录 一、总览工具二、放大镜工具三、查看器工具ArcGIS中提供了三种局部查看的工具: 总览(鹰眼)、放大镜、查看器,如下图所示,本文讲述这三种工具的使用方法。 一、总览工具 为了便于效果查看与比对,本实验采用全球影像数据(位于配套实验数据包中的0140.rar中),加…

从零搭建一套远程手机的桌面操控和文件传输的小工具

从零搭建一套远程手机的桌面操控和文件传输的小工具 --ADB连接专题 一、前言 前面的篇章中,我们确定了通过基于TCP连接的ADB控制远程手机的操作思路。本篇中我们将进行实际的ADB桥接的具体链路搭建工作,从原理和实际部署和操作层面上,从零…

ROS2 与机器人视觉入门教程(ROS2 OpenCV)

系列文章目录 前言 由于现有的ROS2与计算机视觉(特别是机器人视觉)教程较少,因此根据以往所学与积累的经验,对ROS2与机器人视觉相关理论与代码进行分析说明。 本文简要介绍了机器人视觉。首先介绍 ROS2 中图像发布者和订阅者的基…

JVM 面试八股文

目录 1. 前言 2. JVM 简介 3. JVM 内存划分 3.1 为什么要进行内存划分 3.2 内存划分的核心区域 3.2.1 核心区域一: 程序计数器 3.2.2 核心区域二: 元数据区 3.2.3 核心区域三: 栈 3.2.4 核心区域四: 堆 4. JVM 类加载机制 4.1 类加载的步骤 4.1.1 步骤一: 加载 4…

我的世界-与门、或门、非门等基本门电路实现

一、红石比较器 (1) 红石比较器结构 红石比较器有前端单火把、后端双火把以及两个侧端 其中后端和侧端是输入信号,前端是输出信号 (2) 红石比较器的两种模式 比较模式 前端火把未点亮时处于比较模式 侧端>后端 → 0 当任一侧端强度大于后端强度时,输出…

【2024年华为OD机试】 (B卷,100分)- 字符串分割(Java JS PythonC/C++)

一、问题描述 题目解析 问题描述 给定一个非空字符串 s,要求将该字符串分割成若干子串,使得每个子串的 ASCII 码值之和均为“水仙花数”。具体要求如下: 若分割不成功,则返回 0;若分割成功且分割结果不唯一&#x…

Elasticsearch 和arkime 安装

安装一定要注意版本号,不然使用不了 这里Ubuntu使用ubuntu-20.04.6-desktop-amd64.iso elasticsearch这里使用Elasticsearch 7.17.5 | Elastic arkime这里使用wget https://s3.amazonaws.com/files.molo.ch/builds/ubuntu-20.04/arkime_3.4.2-1_amd64.deb 大家想…

简述mysql 主从复制原理及其工作过程,配置一主两从并验证。

MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执行这些日志中的操作。 MySQL主从同步是基…

MySQL 主从复制原理及其工作过程的配置

一、MySQL主从复制原理 MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执行这些日志中的操作…

多平台下Informatica在医疗数据抽取中的应用

一、引言 1.医疗数据抽取与 Informatica 概述 1.1 医疗数据的特点与来源 1.1.1 数据特点 医疗数据具有显著的多样性特点。从数据类型来看,涵盖了结构化数据,如患者的基本信息、检验检查结果等,这些数据通常以表格形式存储,便于…

智能创造的幕后推手:AIGC浪潮下看AI训练师如何塑造智能未来

文章目录 一、AIGC时代的算法与模型训练概览二、算法与模型训练的关键环节三、AI训练师的角色与职责四、AI训练师的专业技能与素养五、AIGC算法与模型训练的未来展望《AI训练师手册:算法与模型训练从入门到精通》亮点内容简介作者简介谷建阳 目录 《AI智能化办公&am…

有限元分析学习——Anasys Workbanch第一阶段笔记(13)网格单元分类、物理场与自由度概念

目录 0 序言 1 网格单元分类 2 各类单元的应用 3 massage与帮助和查看 4 物理场和自由度 4.1 各种单元自由度 4.2 结构自由度 0 序言 本章主要讲解网格单元的分类及物理场和自由度的相关概念。 1 网格单元分类 按单元的形状分类:实体单元、壳单元和杆梁单元…

RC2在线加密工具

RC2是由著名密码学家Ron Rivest设计的一种传统对称分组加密算法,它可作为DES算法的建议替代算法。RC2是一种分组加密算法,RC2的密钥长度可变,可以从8字节到128字节,安全性选择更加灵活。 开发调试上,有时候需要进行对…

深度学习笔记——循环神经网络RNN

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍面试过程中可能遇到的循环神经网络RNN知识点。 文章目录 文本特征提取的方法1. 基础方法1.1 词袋模型(Bag of Words, BOW)工作原…

.NET周刊【1月第1期 2025-01-05】

国内文章 3款.NET开源、功能强大的通讯调试工具,效率提升利器! https://www.cnblogs.com/Can-daydayup/p/18631410 本文介绍了三款功能强大的.NET开源通讯调试工具,旨在提高调试效率。这些工具包括LLCOM,提供串口调试和自动化处…

AT8870单通道直流电机驱动芯片

AT8870单通道直流电机驱动芯片 典型应用原理图 描述 AT8870是一款刷式直流电机驱动器,适用于打印机、电器、工业设备以及其他小型机器。两个逻辑输入控制H桥驱动器,该驱动器由四个N-MOS组成,能够以高达3.6A的峰值电流双向控制电机。利用电流…

创建 pdf 合同模板

创建 pdf 合同模板 一、前言二、模板展示三、制作过程 一、前言 前段时间要求创建“pdf”模板,学会了后感觉虽然简单,但开始也折腾了好久,这里做个记录。 二、模板展示 要创建这样的模板 三、制作过程 新建一个“Word”,这里命…

【Go】Go数据类型详解—指针

1. 前言 在我看来,一门编程语言语法的核心就在于数据类型。而各类编程语言的基本数据类型大致相同:int整型、float浮点型、string字符串类型、bool布尔类型,但是在一些进阶数据类型上就有所不同了。本文将会介绍Go语言当中核心的数据类型——…

CSS 圆形头像和破图时显示默认图片

一、需求 1、css实现圆形头像 2、破图是显示默认图片 二、实现 <img :src"photoSrc" class"circle-avatar" :width"size" :height"size" error"handleImageError" //破图时使用的方法 > <style> .circl…