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

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}")

相关文章:

  • IPv6 公网设置技巧
  • 初识javascript
  • Sharding-JDBC 系列专题 - 第一篇:简介与快速入门
  • Cribl 对Windows-xml log 进行 -Removing filed-06
  • DSP28335入门学习——第一节:工程项目创建
  • SpringBoot 3 与 SpringDoc 打造完美接口文档
  • Centos9 离线安装 MYSQL8
  • Spring Boot集成MongoDB及实战技巧与性能调优
  • android framework开发的技能要求
  • 哈希表实现
  • 微前端框架 Wujie
  • python3GUI--仿网课答题播放器 By:PyQt5(分享)
  • System.out 详解
  • ts与面向对象
  • trivy开源安全漏洞扫描器——筑梦之路
  • 操作系统:进程是一个非常重要的抽象概念
  • QML 样式库
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用类尺寸QSizeF)
  • Java发生OOM是否必然导致JVM退出
  • 【工具变量】A股上市企业数据资产披露水平数据集(2000-2023年)
  • 奔驰一季度利润降四成,受美国加征关税影响放弃全年盈利展望
  • 习近平主持召开部分省区市“十五五”时期经济社会发展座谈会
  • 4月译著联合书单|心爱之物:热爱如何联结并塑造我们
  • 78家公募年度业绩比拼:23家营收净利双升,十强座次微调
  • 科学家为AI模型设置“防火墙”,以防止被不法分子滥用
  • 昂立教育:去年减亏1.39亿元,今年以“利润持续增长”为核心目标