微信扫码
与创始人交个朋友
我要投稿
六、ReAct 核心思想是:推理+操作
1、实现 ReAct 算法的测试函数:使用 LangChain 库和 OpenAI API 来执行推理和操作。
# 以下`SERPAPI_API_KEY`仅为示例,请访问 https://serpapi.com 注册账号并替换为自己的 `API_KEY`(每月100次免费调用)
def react_test():
"""
实现 ReAct 算法的测试函数。
使用 LangChain 库和 OpenAI API 来执行推理和操作。
"""
os.environ["SERPAPI_API_KEY"] = os.getenv('SERPAPI_API_KEY')
# 加载 LangChain 内置的 Tools
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# 实例化 ZERO_SHOT_REACT Agent
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
print(agent.run("谁是莱昂纳多·迪卡普里奥的女朋友?她现在年龄的0.43次方是多少"))
2、测试自我提问与搜索功能的函数:使用 SerpAPI 来执行搜索操作,并结合 LangChain 的工具和LLM进行问答。
def self_ask_with_search_test():"""测试自我提问与搜索功能的函数。使用 SerpAPI 来执行搜索操作,并结合 LangChain 的工具和LLM进行问答。"""os.environ["SERPAPI_API_KEY"] = os.getenv('SERPAPI_API_KEY')# 实例化查询工具search = SerpAPIWrapper()tools = [Tool(name="Intermediate Answer",func=search.run,description="useful for when you need to ask with search",)]# 实例化 SELF_ASK_WITH_SEARCH Agentself_ask_with_search = initialize_agent(tools, llm, agent=AgentType.SELF_ASK_WITH_SEARCH, verbose=True,handle_parsing_errors=True)# 实际运行 Agent,查询问题(正确)self_ask_with_search.run("成都举办的大运会是第几届大运会?")
3、测试函数工具的函数:使用 LangChain 和 OpenAI 来执行特定的函数操作。
def get_word_length(word: str) -> int:
"""
计算单词长度的工具函数。
参数:
word: 要计算长度的单词。
返回:
单词的长度。
"""
"""Returns the length of a word."""
return len(word)
tools = [get_word_length]
def function_test():
"""
测试函数工具的函数。
使用 LangChain 和 OpenAI 来执行特定的函数操作。
"""
system_message = SystemMessage(content="你是非常强大的AI助手,但在计算单词长度方面不擅长。")
prompt = OpenAIFunctionsAgent.create_prompt(system_message=system_message)
agent = OpenAIFunctionsAgent(llm=llm, tools=tools, prompt=prompt)
# 实例化 OpenAIFunctionsAgent
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.run("单词“educa”中有多少个字母?")
4、测试函数记忆功能的函数:使用 LangChain 的记忆机制来保持对话上下文。
def function_memory_test():"""测试函数记忆功能的函数。使用 LangChain 的记忆机制来保持对话上下文。"""system_message = SystemMessage(content="你是非常强大的AI助手,但在计算单词长度方面不擅长。")MEMORY_KEY = "chat_history"prompt = OpenAIFunctionsAgent.create_prompt(system_message=system_message,extra_prompt_messages=[MessagesPlaceholder(variable_name=MEMORY_KEY)])memory = ConversationBufferMemory(memory_key=MEMORY_KEY, return_messages=True)agent = OpenAIFunctionsAgent(llm=llm, tools=tools, prompt=prompt)# 实例化 OpenAIFunctionsAgentagent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)agent_executor.run("单词“educa”中有多少个字母?")#agent_executor.run("那是一个真实的单词吗?")
5、完整代码
# 加载环境变量
import openai
import os
import tiktoken
# 加载 .env 文件
from dotenv import load_dotenv, find_dotenv
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI
from langchain.chains import LLMChain
#from langchain.chat_models import AzureChatOpenAI
from langchain.chat_models import ChatOpenAI #直接访问OpenAI的GPT服务
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType,Tool
from langchain.utilities import SerpAPIWrapper
from langchain.schema import SystemMessage
from langchain.agents import OpenAIFunctionsAgent
from langchain.agents import AgentExecutor
from langchain.agents import tool
from langchain.prompts import MessagesPlaceholder
from langchain.memory import ConversationBufferMemory
# 加载环境变量
_ = load_dotenv(find_dotenv())
# 从环境变量中获得你的 OpenAI Key和配置URL
openai.api_key = os.getenv('OPENAI_API_KEY')
openai.api_base = os.getenv('OPENAI_API_URL')
model = os.getenv('OPENAI_API_MODEL')
# 初始化LLM链
llm = ChatOpenAI(model_name=model, temperature=0) #直接访问OpenAI的GPT服务
# ReAct 核心思想是 推理+操作,本示例以` Google Search` 和 `LLM Math` 作为可选操作集合(toolkits),实现 ReAct 功能。
# 以下`SERPAPI_API_KEY`仅为示例,请访问 https://serpapi.com 注册账号并替换为自己的 `API_KEY`(每月100次免费调用)
def react_test():
"""
实现 ReAct 算法的测试函数。
使用 LangChain 库和 OpenAI API 来执行推理和操作。
"""
os.environ["SERPAPI_API_KEY"] = os.getenv('SERPAPI_API_KEY')
# 加载 LangChain 内置的 Tools
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# 实例化 ZERO_SHOT_REACT Agent
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
print(agent.run("谁是莱昂纳多·迪卡普里奥的女朋友?她现在年龄的0.43次方是多少"))
def self_ask_with_search_test():
"""
测试自我提问与搜索功能的函数。
使用 SerpAPI 来执行搜索操作,并结合 LangChain 的工具和LLM进行问答。
"""
os.environ["SERPAPI_API_KEY"] = os.getenv('SERPAPI_API_KEY')
# 实例化查询工具
search = SerpAPIWrapper()
tools = [
Tool(
name="Intermediate Answer",
func=search.run,
description="useful for when you need to ask with search",
)
]
# 实例化 SELF_ASK_WITH_SEARCH Agent
self_ask_with_search = initialize_agent(
tools, llm, agent=AgentType.SELF_ASK_WITH_SEARCH, verbose=True,handle_parsing_errors=True
)
# 实际运行 Agent,查询问题(正确)
self_ask_with_search.run(
"成都举办的大运会是第几届大运会?"
)
def get_word_length(word: str) -> int:
"""
计算单词长度的工具函数。
参数:
word: 要计算长度的单词。
返回:
单词的长度。
"""
"""Returns the length of a word."""
return len(word)
tools = [get_word_length]
def function_test():
"""
测试函数工具的函数。
使用 LangChain 和 OpenAI 来执行特定的函数操作。
"""
system_message = SystemMessage(content="你是非常强大的AI助手,但在计算单词长度方面不擅长。")
prompt = OpenAIFunctionsAgent.create_prompt(system_message=system_message)
agent = OpenAIFunctionsAgent(llm=llm, tools=tools, prompt=prompt)
# 实例化 OpenAIFunctionsAgent
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.run("单词“educa”中有多少个字母?")
def function_memory_test():
"""
测试函数记忆功能的函数。
使用 LangChain 的记忆机制来保持对话上下文。
"""
system_message = SystemMessage(content="你是非常强大的AI助手,但在计算单词长度方面不擅长。")
MEMORY_KEY = "chat_history"
prompt = OpenAIFunctionsAgent.create_prompt(
system_message=system_message,
extra_prompt_messages=[MessagesPlaceholder(variable_name=MEMORY_KEY)]
)
memory = ConversationBufferMemory(memory_key=MEMORY_KEY, return_messages=True)
agent = OpenAIFunctionsAgent(llm=llm, tools=tools, prompt=prompt)
# 实例化 OpenAIFunctionsAgent
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.run("单词“educa”中有多少个字母?")
#agent_executor.run("那是一个真实的单词吗?")
# python 入口函数
if __name__ == '__main__':
#react_test()
#self_ask_with_search_test()
#function_test()
function_memory_test()
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-01-07
2025 年10大AI 方向:高效推理、多模态等
2025-01-06
利用多模态RAG实现图文并茂的内容生成
2025-01-02
2025年开篇|AI Agent与多模态大模型:智能革命的新纪元
2024-12-31
多模态RAG技术:从语义抽取到VLM应用与规模化挑战
2024-12-26
戴上眼镜的Kimi能力超强,领先 o1 和 Gemini
2024-12-21
Gemini 2.0 Flash Thinking:谷歌推出实验性多模态推理模型,在快速生成的同时展示详细的思考过程
2024-12-20
快手可灵1.6正式上线,他们又一次超越了自己。
2024-12-19
GPT-4o掀起全模态热潮!一文梳理全模态大模型最新研究进展
2024-09-12
2024-05-30
2024-06-14
2024-06-17
2024-08-06
2024-08-30
2024-04-21
2024-06-26
2024-07-21
2024-07-07