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

news2024/11/30 0:27:23

基于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.coloradmin.cn/o/2218455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[含文档+PPT+源码等]精品大数据项目-基于python实现的社交媒体用户活跃时间预测系统

大数据项目——基于Python实现的社交媒体用户活跃时间预测系统的背景可以从以下几个方面进行详细阐述: 一、项目背景与意义 随着互联网技术的快速发展和社交媒体的普及,社交媒体平台已经成为人们日常生活中不可或缺的一部分。每天都有数以亿计的用户在…

Golang笔记_day08

Go面试题(一) 1、空切片 和 nil 切片 区别 空切片: 空切片是指长度和容量都为0的切片。它不包含任何元素,但仍然具有切片的容量属性。在Go语言中,可以使用内置的make函数创建一个空切片,例如:…

[Godot4] 水底气泡的 gdshader

水底气泡的 gdshader 来自 shadertoy 的代码 在这里,我添加了 x 方向和 y 方向上的 uv 位移 但是还是感觉太弱智 shader_type canvas_item; // Created by greenbird10 // License Creative Commons Attribution-NonCommercial-ShareAlike 3.0uniform float bub…

C语言笔记(指针的进阶)

目录 1.字符指针 2.指针数组 3.数组指针 3.1.创建数组指针 3.2.&数组名和数组名 1.字符指针 int main() { char ch w;char* pc &ch;const char *p "abcdef";//常量字符串 产生的值就是首元素的地址//常量字符串不能被修改 因此需要加上一个…

go 环境安装

最近搭建AIGC大模型聚合平台,涉及到了go语言,随手整理一下环境安装步骤分享给大家。 1、安装 官网下载地址:https://go.dev/ 1.1 Linux 安装 yum install git -y yum install golang -y yum install gcc -y # 日志工具,如需要…

Web保存状态的手段(请求转发,Cookie的使用)

一,掌握请求转发 请求转发与重定向技术都是跳转页面的途径,但是这两个技术之间也有不同之处。 请求转发更倾向于servlet跳转jsp,而重定向更倾向于servlet跳转到servlet。 1. 常用页面跳转方法2:请求转发(重写URL) RequestDispatcher接口对…

基于SpringBoot+Vue+uniapp微信小程序的教学质量评价系统的详细设计和实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

细胞力学需测量,多种方法齐上场,优劣互补要明了

大家好!今天我们来了解细胞力学方法的比较研究——《A comparison of methods to assess cell mechanical properties》发表于《Nature Methods》。细胞力学对细胞的多种功能至关重要,然而不同测量方法得到的结果差异较大。本次研究选取了MCF-7细胞&…

用Java爬虫API,轻松获取taobao商品SKU信息

在电子商务的世界里,SKU(Stock Keeping Unit,库存单位)是商品管理的基础。对于商家来说,SKU的详细信息对于库存管理、价格策略制定、市场分析等都有着重要作用。taobao作为中国最大的电子商务平台之一,提供…

JavaSE——集合4:List接口实现类—LinkedList

目录 一、LinkedList的全面说明 二、LinkedList的底层操作机制 (一)LinkedList添加结点源码 (二)LinkedList删除结点源码 三、LinkedList常用方法 四、ArrayList与LinkedList的选择 一、LinkedList的全面说明 LinkedList底层实现了双向链表和双端队列的特点可以添加任意…

【热门】用ChatGPT做智慧农业云平台——农业ERP管控系统

随着科技的进步,原有农业种植方式已经不能满足社会发展的需要,必须对传统的农业进行技术更新和改造。经过多年的实践,人们总结出一种新的种植方法——温室农业,即“用人工设施控制环境因素,使作物获得最适宜的生长条件,从而延长生产季节,获得最佳的产出”。这种农业生产方式…

“智改数转”转了什么?

万界星空科技专门针对数字化改造申报的MES系统具有显著的技术优势和实施效果,能够为制造型企业提供全方位、高效、可靠的数字化转型支持。项目合作可以私信或者百度上海万界星空科技官网。 “智改数转”是一个综合性的过程,涉及企业多个方面的转型和升…

随机抽取学号

idea 配置 抽学号 浏览器 提交一个100 以内的整数。,后端接受后,根据提供的整数,产生 100 以内的 随机数,返回给浏览器? 前端:提供 随机数范围 ,病发送请求后端:处理随机数的产生&…

C 408—《数据结构》算法题基础篇—链表(下)

目录 Δ前言 一、两个升序链表归并为一个降序链表 0.题目: 1.算法设计思想: 2.C语言描述: 3.算法的时间和空间复杂度: 二、两个链表的所有相同值结点生成一个新链表 0.题目: 1.算法设计思想: 2.C语言描述…

DDD重构-实体与限界上下文重构

DDD重构-实体与限界上下文重构 概述 DDD 方法需要不同类型的类元素,例如实体或值对象,并且几乎所有这些类元素都可以看作是常规的 Java 类。它们的总体结构是 Name: 类的唯一名称 Properties:属性 Methods: 控制变量的变化和添加行为 一…

MySQL中 truncate、drop和delete的区别

MySQL中 truncate、drop和delete区别 truncate 执行速度快,删除所有数据,但是保留表结构不记录日志事务不安全,不能回滚可重置自增主键计数器 drop 执行速度较快,删除整张表数据和结构不记录日志事务不安全,不能回…

JavaWeb——Maven(3/8):配置Maven环境(当前工程,全局),创建Maven项目

目录 配置Maven环境 当前工程 全局 创建Maven项目 配置Maven环境 当前工程 选择 IDEA中 File --> Settings --> Build,Execution,Deployment --> Build Tools --> Maven 设置 IDEA 使用本地安装的 Maven,并修改配置文件及本地仓库路径 首先在 IDE…

QtCreator14调试Qt5.15出现 Launching Debugger 错误

1、问题描述 使用QtCreator14调试程序,Launching Debugger 显示红色,无法进入调试模式。 故障现象如下: 使能Debugger Log窗口,显示: 325^error,msg"Error while executing Python code." 不过&#xff…

【软件推荐】信创终端上通过kshutdown实现定时关机 _ 统信 _ 麒麟 _ 方德

往期好文:【功能介绍】麒麟2403支持配置任务栏上的图标“从不合并”啦! Hello,大家好啊!今天给大家带来一篇关于如何在信创终端系统上通过kshutdown实现定时关机的文章。在日常使用中,定时关机是一个非常实用的功能&am…

Leetcode 841. 钥匙和房间

1.题目基本信息 1.1.题目描述 有 n 个房间,房间按从 0 到 n – 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。 当你进入一个房间,你可能会在…