当前位置: 首页 > java >正文

LangChain 单智能体模式示例【纯代码】

# LangChain 单智能体模式示例import os
from typing import Anyfrom langchain.agents import AgentType, initialize_agent, Tool
from langchain_openai import ChatOpenAI
from langchain.tools import BaseTool
from langchain_experimental.tools.python.tool import PythonREPLTool
from langchain.memory import ConversationBufferMemory
from langchain_community.utilities import WikipediaAPIWrapper
from langgraph.prebuilt import create_react_agent# 确保设置环境变量
os.environ["OPENAI_API_KEY"] = "sk-cRMC2m0GsE18vYaWdAMj"
os.environ["OPENAI_BASE_URL"] = "https://aigptx.top/v1/"# 1. ReAct 智能体示例 - 结合推理和行动的智能体
def create_init_tool_agent():"""创建基本的ReAct智能体"""# 定义工具集wikipedia = WikipediaAPIWrapper()python_repl = PythonREPLTool()tools = [Tool(name="维基百科",func=wikipedia.run,description="用于查询维基百科文章的工具"),Tool(name="Python解释器",func=python_repl.run,description="用于执行Python代码的工具,可以进行计算或数据分析")]# 创建LLMllm = ChatOpenAI(temperature=1, max_tokens=2000, model='gpt-3.5-turbo-0125')# 创建记忆组件memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)# langgraph_agent_executor = create_react_agent(model=llm, tools=tools)# 初始化ReAct智能体langgraph_agent_executor = initialize_agent(tools,llm,agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,verbose=True,memory=memory,handle_parsing_errors=True)return langgraph_agent_executor# 2. OpenAI函数智能体示例 - 专为函数调用设计的智能体
def create_openai_functions_agent():"""创建基于OpenAI函数调用的智能体"""# 定义工具集wikipedia = WikipediaAPIWrapper()python_repl = PythonREPLTool()tools = [Tool(name="Python执行器",func=python_repl.run,description="执行Python代码的工具,适合进行计算、数据处理"),Tool(name="维基百科",func=wikipedia.run,description="搜索维基百科文章的工具,适合查询事实性信息")]# 创建LLMllm = ChatOpenAI(temperature=0)# 初始化OpenAI函数智能体agent = initialize_agent(tools,llm,agent=AgentType.OPENAI_FUNCTIONS,verbose=True)return agent# 3. 自定义智能体工具示例
class WeatherTool(BaseTool):name: str = "天气查询"description: str = "查询指定城市的天气情况"def _run(self, city: str) -> str:# 模拟天气API调用return f"{city}的天气: 晴朗, 25°C, 湿度50%"async def _arun(self, city: str) -> str:return self._run(city)class CalculatorTool(BaseTool):name: str = "计算器"description: str = "进行数学计算,输入应为数学表达式"def _run(self, expression: str) -> str:try:result = eval(expression)return f"计算结果: {result}"except Exception as e:return f"计算错误: {str(e)}"async def _arun(self, expression: str) -> str:return self._run(expression)def create_custom_tool_agent():"""创建带有自定义工具的智能体"""tools = [WeatherTool(),CalculatorTool(),PythonREPLTool()]llm = ChatOpenAI(temperature=0)agents = initialize_agent(tools,llm,agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,verbose=True)return agents# 使用示例
if __name__ == "__main__":print("=== LangChain 单智能体模式示例 ===")# 选择要演示的智能体类型 agent_type = "openai_functions"  # 可选: "react", "openai_functions", "custom"response: Any = ''if agent_type == "react":agent = create_init_tool_agent()response = agent.invoke({'input': '谁是阿尔伯特·爱因斯坦? 他出生于哪一年? 计算从他出生到现在过了多少年。回答的时候请使用中文输出', 'chat_history': []})elif agent_type == "openai_functions":agent = create_openai_functions_agent()response = agent.invoke({'input': '计算 2345 + 5678 的结果,并解释这两个数字的数学特性。', 'chat_history': []})elif agent_type == "custom":agent = create_custom_tool_agent()response = agent.invoke({'input': '北京今天的时间和今天的天气如何?然后计算25乘以4的结果。', 'chat_history': []})print(f"\n最终回答: {response}")
http://www.xdnf.cn/news/777.html

相关文章:

  • Spring Boot 集成 Spring Cloud 的详细教程
  • 学习笔记—C++—string(练习题)
  • 基于 LWE 的格密码python实战
  • STM32 HAL库Freertos 信号量的使用
  • c++类与对象(一)
  • Postgresql几个常用的json操作
  • dubbo SPI插件扩展点使用
  • [RHEL8] 指定rpm软件包的更高版本模块流
  • 深度解析微前端架构设计:从monorepo工程化设计到最佳实践
  • day 22 作业
  • python 字符串解析 struct.unpack_from(fmt, buffer, offset=0) ‘<? B I‘
  • Datawhale 春训营 创新药赛道
  • 011数论——算法备赛
  • 解决IDEA创建SpringBoot项目没有Java版本8
  • 线性回归之归一化(normalization)
  • SAP IAS云产品简介
  • AI与思维模型【70】——遗忘曲线
  • 金融图QCPFinancial
  • Oracle--用户管理
  • 微信小程序上传腾讯云
  • 基于SpringBoot的社区家庭医生在线问诊系统
  • 【笔记】SpringBoot实现图片上传和获取图片接口
  • 【上位机——MFC】消息映射机制
  • 【TeamFlow】3 Rust 与 WebAssembly (Wasm) 深度应用指南
  • JavaScript 版本号比较
  • Matlab PID参数整定和设计
  • UI界面工程,如何使用控制台
  • 101. 对称二叉树
  • 深度学习相关技术
  • python tkinter库窗口的使用