什麼是AIAgent?
是一種能夠感知環境、進行決策和執行動作的智慧實體,也可以稱為“人工智慧代理”或“智慧體”。
其核心採用LLM作為Agent的大腦,利用大模型的決策與思考能力,透過記憶模組,結合大模型決策,實現長期、短期規劃能力。
透過整合視覺、聽覺甚至觸覺資訊、外部資訊輸入,展現出多型別、多感官、多模態的感知與理解能力,甚至實現環境感知。
透過瞭解和使用各種工具,AI能夠擴充套件自身能力甚至與外界產生互動。
1. 替換預設請求地址為自定義API
import { ChatOpenAI } from '@langchain/openai'; const chat = new ChatOpenAI({ model: 'gpt4o', temperature: 0, apiKey: '****', configuration: { baseURL: 'https://www.xx.com/v1',// 替換 }, });
2. 搭建自定義Tools工具集
import { DynamicTool } from 'langchain/tools'; // 定義callback函式 function getWeather(date: string) { console.log('Func Calling: 執行getWeather', date); // 這裏應該是實際的天氣API呼叫 return `${date} 的天氣是陰雨天`; } function getWeatherScore(weather: string) { console.log('Func Calling: 執行getWeatherScore', weather); // 這裏應該是實際的天氣API呼叫 return `${weather} 的得分是99分`; } // 定義callback工具 const weatherTool = new DynamicTool({ name: 'Weather', description: '獲取某天的天氣,需要傳入日期', func: async (date: string) => getWeather(date), }); const weatherScoreTool = new DynamicTool({ name: 'WeatherScore', description: '獲取某個天氣的推薦出行得分,需要傳入天氣', func: async (wearcher: string) => getWeatherScore(wearcher), }); // 定義工具集合 const tools = [weatherTool, weatherScoreTool];
3. 建立初始化提示詞
import { ChatPromptTemplate } from '@langchain/core/prompts'; // 建立初始化提示詞 const prompt = ChatPromptTemplate.fromMessages([ ['system', 'You are a helpful assistant'], ['placeholder', '{chat_history}'], ['human', '{input}'], ['placeholder', '{agent_scratchpad}'], ]);
4. 建立AI-Agent工作流
import { AgentExecutor, createOpenAIToolsAgent } from 'langchain/agents'; // 建立智慧體 const agent = await createOpenAIToolsAgent({ llm: chat, tools, prompt, streamRunnable: false, }); // 建立執行器 const agentExecutor = new AgentExecutor({ agent, tools, }); const result = await agentExecutor.invoke({ input: ` # 問題 你好,告訴我2024-10-01日天氣如何,並告訴我那個天氣的出行得分 # step1 請先呼叫獲取天氣工具查詢天氣 # step2 以獲取的天氣呼叫得分查詢工具 # step3 透過分佈查詢,聚合結果,給我想要的答案`, });