微信扫码
与创始人交个朋友
我要投稿
本文介绍如何使用llamaindex来编写自己的Agent处理函数。注意,本文都是使用本地部署的ollama支持的LLM来进行实战,而不是远程调用OpenAI的接口。
本文要实现的是:把输出的内容保存到一个pdf文件中,然后停止整个过程。
(1)定义Agent函数:定义一个常规的函数,可以用来实现你要实现的任何功能。
(2)通过FunctionTool对函数进行封装:要注意封装后的函数名,需要和定义的函数名相同。
(3)创建LLM对象:这里我是使用的是Ollama来定义一个LLM对象。这里可以使用不同的LLM模型,得到的效果可能不同。可以根据自己的需要来设置model参数的值,来设置模型名。
(4)创建ReActAgent对象,来创建一个agent对象
(5)使用agent.chat来和agent对话,让agent和LLM来完成工作。
from llama_index.llms.ollama import Ollama
from llama_index.core.agent import ReActAgent
from llama_index.core.tools import FunctionTool
from fpdf import FPDF # 使用 fpdf 库来生成 PDF 文件
from typing import Any
# 定义一个将响应内容写入 PDF 的工具函数
def save_response_to_pdf(response: str, **kwargs) -> str:
"""Save the response to a PDF file."""
# 初始化 PDF
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
# 写入响应内容到 PDF
pdf.cell(200, 10, txt="Agent Response:", ln=True, align='L')
pdf.multi_cell(0, 10, txt=response)
# 保存 PDF 文件
pdf_filename = "agent_response.pdf"
pdf.output(pdf_filename)
print(f"Response saved to {pdf_filename}.")
return f"Response saved to PDF as {pdf_filename}."
# 将工具函数封装为 FunctionTool
save_response_to_pdf_tool = FunctionTool.from_defaults(fn=save_response_to_pdf)
# 设置 LLM 和 Agent
llm = Ollama(model="llama3.2", request_timeout=360)
agent = ReActAgent.from_tools([save_response_to_pdf_tool], llm=llm, verbose=True)
# 使用 Agent 进行对话,并保存响应到 PDF
response = agent.chat("Please answer the question: who are you? and then save the answer to pdf file!")
print(str(response))
代码输出:
> Running step 00a441f1-302b-4e7b-afec-18a4e471a138. Step input: Please answer the question: who are you? and then save the answer to pdf file!
Thought: The current language of the user is: English. I need to use a tool to help me answer the question.
Action: save_response_to_pdf
Action Input: {'response': 'I am an artificial intelligence designed to simulate human-like conversations, answer questions, and provide information on a wide range of topics.', 'title': 'Answer'}
Response saved to agent_response.pdf.
Observation: Response saved to PDF as agent_response.pdf.
> Running step dd52ab6a-40dc-481c-a7a4-245fce133119. Step input: None
Thought: I can answer without using any more tools. I'll use the user's language to answer
Answer: I am an artificial intelligence designed to simulate human-like conversations, answer questions, and provide information on a wide range of topics.
I am an artificial intelligence designed to simulate human-like conversations, answer questions, and provide information on a wide range of topics.
可以看到Agent理解了我提出的目标和要求,通过:思考(Thought),行动(Action)自动找到执行行动的函数,输入(Action Input),观察(Observation)的步骤,完成了工作目标。
本文通过llamaindex框架实现了一个简单的agent功能(保存内容到pdf文档)。这里的agent只实现了一个功能,只有一个步骤。后面会演示如何让Agent来调用多个工具函数。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-01
LlamaIndex,让AI唤醒你的数据
2024-11-22
llamaindex实战-Agent-让Agent调用多个工具函数(本地部署)
2024-11-19
llamaindex实战-Workflow:工作流入门(本地部署断网运行)
2024-11-15
llamaindex实战-Agent-在Agent中使用RAG查询(本地部署)
2024-11-07
深度解析 REAcT Agent 的实现:利用 LlamaIndex 和 Gemini 提升智能代理工作流
2024-11-04
手把手教你用Coze零代码搭建一个智能搜索智能体,高时效性、保姆级!
2024-10-11
深入解析LlamaIndex Workflows【下篇】:实现ReAct模式AI智能体的新方法
2024-10-10
使用Milvus和Llama-agents构建更强大的Agent系统
2024-07-09
2024-04-20
2024-06-05
2024-04-25
2024-04-28
2024-05-09
2024-07-20
2024-04-26
2024-06-19
2024-04-08