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.pswp.cn/bicheng/77691.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77691.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77691.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決:VSCode C++ conan 安裝第三方庫后 頭文件報錯

文章目錄 1 頭文件include路徑查找報錯參考 1 頭文件include路徑查找報錯 找到conan_toolchain.cmake中 INCLUDE_PATH list(PREPEND CMAKE_INCLUDE_PATH "/Users/hanliqiang/.conan2/p/b/fmte8c4f7a755477/p/include")生成C編譯配置 CtrlShiftP 中選擇C Edit Confi…

松靈Cobot Magic雙臂具身遙操機器人(基于ROS的定位建圖與協同導航技術)

摘要 本文以CobotMagic可移動協作機器人為研究對象,從硬件架構設計、軟件系統架構、多傳感器融合定位建圖系統、智能導航系統協同機制四個維度,深入解析機器人系統工作原理。重點研究多傳感器融合定位建圖系統實現原理,結合實測數據驗證系統…

回歸,git 分支開發操作命令

核心分支說明 主分支(master/production)存放隨時可部署到生產環境的穩定代碼,僅接受通過測試的合并請求。 開發分支(develop)集成所有功能開發的穩定版本,日常開發的基礎分支,從該分支創建特性…

ASP.NET Core 最小 API:極簡開發,高效構建(下)

在上篇文章 ASP.NET Core 最小 API:極簡開發,高效構建(上) 中我們添加了 API 代碼并且測試,本篇繼續補充相關內容。 一、使用 MapGroup API 示例應用代碼每次設置終結點時都會重復 todoitems URL 前綴。 API 通常具有…

Spring之我見 - Spring Boot Starter 自動裝配原理

歡迎光臨小站:致橡樹 Spring Boot Starter 的核心設計理念是 約定優于配置,其核心實現基于 自動配置(Auto-Configuration) 和 條件化注冊(Conditional Registration)。以下是其生效原理: 約定…

精益數據分析(7/126):打破創業幻想,擁抱數據驅動

精益數據分析(7/126):打破創業幻想,擁抱數據驅動 在創業的道路上,我們都懷揣著夢想,但往往容易陷入自我編織的幻想中。我希望通過和大家一起學習《精益數據分析》,能幫助我們更清醒地認識創業過…

牛客java練習題

[toc] 1.依賴注入 依賴注入是一種設計模式和編程思想,不依賴 具體的框架實現,可以通過多種方式和框架來實現可以通過Spring , Google Guice , PicoContainer 等都可以實現依賴注入,也可以通過手動編寫實現目的: 為了解耦合,將對象之間的依賴關系從代碼中解耦出來, 使系統更加…

大模型應用開發自學筆記

理論學習地址: https://zh.d2l.ai/chapter_linear-networks/index.html autodl學術加速: source /etc/network_turboconda常見操作: 刪除: conda remove --name myenv --all -y導出: conda env export > environment.yml…

鴻蒙ArkUI實戰之TextArea組件、RichEditor組件、RichText組件、Search組件的使用

本文接上篇繼續更新ArkUI中組件的使用,本文介紹的組件有TextArea組件、RichEditor組件、RichText組件、Search組件,這幾個組件的使用對應特定場景,使用時更加需要注意根據需求去使用 TextArea組件 官方文檔: TextArea-文本與輸…

除了`String`、`StringBuffer` 和 `StringBuilder`之外,還有什么處理字符串的方法?

一、標準庫中的字符串處理類 1. StringJoiner(Java 8) 用途:用于在拼接字符串時自動添加分隔符、前綴和后綴。示例:StringJoiner sj new StringJoiner(", ", "[", "]"); sj.add("A").…

Qt中讀寫結構體字節數據

在Qt中讀寫結構體字節數據通常涉及將結構體轉換為字節數組(QByteArray)或直接從內存中讀寫。以下是幾種常見方法&#xff1a; 方法1&#xff1a;使用QDataStream讀寫結構體 cpp #include <QFile> #include <QDataStream>// 定義結構體 #pragma pack(push, 1) //…

Windows 10 上安裝 Spring Boot CLI詳細步驟

在 Windows 10 上安裝 Spring Boot CLI 可以通過以下幾種方式完成。以下是詳細的步驟說明&#xff1a; 1. 手動安裝&#xff08;推薦&#xff09; 步驟 1&#xff1a;下載 Spring Boot CLI 訪問 Spring Boot CLI 官方發布頁面。下載最新版本的 .zip 文件&#xff08;例如 sp…

Unity3D仿星露谷物語開發37之澆水動畫

1、目標 當點擊水壺時&#xff0c;實現澆水的動畫。同時有一個水從水壺中流出來的特效。 假如某個grid被澆過了&#xff0c;則不能再澆水了。。 如果某個grid沒有被dug過&#xff0c;也不能被澆水。 2、優化Settings.cs腳本 增加如下內容&#xff1a; public static float…

【2】Kubernetes 架構總覽

Kubernetes 架構總覽 主節點與工作節點 主節點 Kubernetes 的主節點&#xff08;Master&#xff09;是組成集群控制平面的關鍵部分&#xff0c;負責整個集群的調度、狀態管理和決策。控制平面由多個核心組件構成&#xff0c;包括&#xff1a; kube-apiserver&#xff1a;集…

如何對docker鏡像存在的gosu安全漏洞進行修復——筑夢之路

這里以mysql的官方鏡像為例進行說明&#xff0c;主要流程為&#xff1a; 1. 分析鏡像存在的安全漏洞具體是什么 2. 根據分析結果有針對性地進行修復處理 3. 基于當前鏡像進行修復安全漏洞并復核驗證 # 鏡像地址mysql:8.0.42 安全漏洞現狀分析 dockerhub網站上獲取該鏡像的…

【Tauri2】026——Tauri+Webassembly

前言 不多廢話 直言的說&#xff0c;筆者看到這篇文章大佬的文章 【04】Tauri 入門篇 - 集成 WebAssembly - 知乎https://zhuanlan.zhihu.com/p/533025312嘗試集成一下WebAssembly&#xff0c;直接開始 正文 準備工作 新建一個項目 安裝 vite的rsw插件和rsw pnpm instal…

OpenHarmony Camera開發指導(五):相機預覽功能(ArkTS)

預覽是在相機啟動后實時顯示場景畫面&#xff0c;通常在拍照和錄像前執行。 開發步驟 創建預覽Surface 如果想在屏幕上顯示預覽畫面&#xff0c;一般由XComponent組件為預覽流提供Surface&#xff08;通過XComponent的getXcomponentSurfaceId方法獲取surfaceid&#xff09;&…

puzzle(0531)腦力航跡

目錄 腦力航跡 規則 解法 簡單模式 中等模式 困難模式 專家模式 腦力航跡 規則 2條航跡會產生一個相對航跡&#xff1a; 根據相對航跡和其中一個航跡推導另外一個航跡。 解法 沒有任何需要推理的地方&#xff0c;就是純粹的2個矢量相加。 簡單模式 中等模式 困難模…

在win上安裝Ubuntu安裝Anaconda(linx環境)

一&#xff0c;安裝Ubuntu 1. 在 Microsoft 商城去下載Ubuntu(LTS:是長期維護的版本) 2.安裝完之后啟動程序&#xff0c;再重新打開一個黑窗口&#xff1a; wsl --list --verbose 3.關閉Ubuntu wsl --shutdown Ubuntu-22.04 WSL2 Ubuntu-20.04文件太占c盤空間&#xff0c;…

NEAT 算法解決 Lunar Lander 問題:從理論到實踐

NEAT 算法解決 Lunar Lander 問題:從理論到實踐 0. 前言1. 定義環境2. 配置 NEAT3. 解決 Lunar lander 問題小結系列鏈接0. 前言 在使用 NEAT 解決強化學習問題一節所用的方法只適用于較簡單的強化學習 (reinforcement learning, RL) 環境。在更復雜的環境中使用同樣的進化解…