基于langchain.js快速搭建AI-Agent

embedded/2024/10/19 22:19:01/

langchainjsAIAgent_0">基于langchain.js快速搭建AI-Agent

什么是AIAgent?

在这里插入图片描述

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工具集

提供工具集,供Agent自主决策

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. 创建初始化提示词

构建对话提示词(可引入Prompt工程化能力)

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工作流

创建智能体,通过提示词,Calling工具集,让AI具有内容感知&自主决策等执行能力

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通过分布查询,聚合结果,给我想要的答案`,
});

Agent执行结果

在这里插入图片描述


http://www.ppmy.cn/embedded/128837.html

相关文章

day 22 第六章 二叉树part07

二叉搜索树的最近公共祖先 利用二叉搜索树的特性。 题目链接/文章讲解:代码随想录 递归法 class Solution { private:TreeNode* traversal(TreeNode* cur, TreeNode* p, TreeNode* q) {if (cur NULL) return cur;// 中if (cur->val > p->val &&am…

VBA技术资料MF211:重置右键菜单及子菜单

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

2024全国大数据与计算智能挑战赛火热报名中!

一年一度的 全国大数据与计算智能挑战赛震撼来袭! 报名速通: https://www.datafountain.cn/special/BDSSF2024 大数据与决策(国家级)实验室连续三年组织发起全国大数据与计算智能挑战赛,旨在深入挖掘大数据应用实践中亟…

Java基础系列和实战

概述 最近对自己的Java基础知识做了以下全面的总结,把知识总结成了Java的基础知识系列,每个知识点总结都结合了实战代码。把这些基础知识放到了java的专栏里(专栏还会持续更新Java进阶的一些知识,如并发编程、Java网络编程、反射…

基于PHP+MySQL+Vue的医院预约挂号管理系统

摘要 本文介绍了一个基于PHP、MySQL和Vue技术栈的医院预约挂号管理系统。该系统旨在优化患者就医流程,提高医院服务效率。后端采用PHP语言开发,利用MySQL数据库存储患者信息、医生排班、科室设置等核心数据,确保了数据的安全性和稳定性。前端…

10月18日,每日信息差

第一、现代汽车集团在上海举办了中国前瞻技术研发中心的发布及启新庆典,宣布成立其全资法人公司 —— 现代前瞻汽车技术开发(上海)有限公司。该中心是集团在海外建立的首个前瞻技术研发中心,专注于自动驾驶、智能座舱、共享出行等…

2_A Guide for EtherNetIP™ Developers之从0开发EtherNetIP

1、该手册的目的 如果您正打算实现 EtherNet/IP™。您从哪里开始?您有哪些选择?您应该考虑哪些问题?您需要了解协议的哪些信息?您应该如何进行开发? 本指南对上述问题给出了基本答案。它概述了实施以太网/IP 所需的步骤…

VuePress的基本常识

今天大概了解了一下Vuepress,感觉很棒,看着极其简单,自己也想做一个,后续我大概率也会做一个用Vuepress为基础做的博客网站,很酷~ 哈哈哈,下面是我今天学习Vuepress的一些内容,简单分享下&#…