AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


llamaindex实战-Agent-自定义工具函数
发布日期:2024-11-29 16:07:17 浏览次数: 1562 来源:大数据架构师修行之路


概述

本文介绍如何使用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+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询