Langchain4J从AI Agent开始

前言

AI Agent是智能体的概念,以大模型为核心,集决策能力、记忆能力、工具调用能力为一体的智能体。
langchain框架是python写的,它是一个大语言模型智能框架,Langchain4J是langchain框架对应的java语言编写的。

langchain框架中,包含了模型、数据集成、链式、工具包、代理、提示词、记忆等概念。

代理Agent是一个高层级概念,它以大模型为核心,集成记忆和工具等为一体,构造了它的决策能力、执行能力、记忆能力,因此被称为智能体。

决策能力: 来源于接入大模型
执行能力: 基于已被定义的接口、方法等业务代码
记忆能力: 基于内存、外部数据源等,来构建上下文环境。

构建AI 智能体

我们已OpenAI gpt-4o为模型底座,构建一个AI 智能体。

 OpenAiChatModel model = OpenAiChatModel.builder().baseUrl("https://xxxx").modelName("gpt-4o-mini").apiKey("xxxx").organizationId("xxxx").temperature(0.1).logRequests(true).logResponses(true).build();TransactionService transactionService = new TransactionService();ChatMemory chatMemory = MessageWindowChatMemory.withMaxMessages(10);Assistant assistant = AiServices.builder(Assistant.class).chatLanguageModel(model).chatMemory(chatMemory).tools(transactionService).build();String userMessage = "历史上的今天发生了什么";interface Assistant {Response<AiMessage> chat(String userMessage);
}
static class TransactionService {@Tool("根据参数id返回一个对应的金额数值")double getTransactionAmount(@P("参数id") String id) {System.out.printf("调用工具getTransactionAmount(%s)%n", id);switch (id) {case "T001":return 11.1;case "T002":return 22.2;default:throw new IllegalArgumentException("Unknown transaction ID: " + id);}}
}

在上述代码中,用户角色问了问题:历史上的今天发生了什么?

其中Assistant 就是一个智能体构建,它包含了大模型集成、记忆能力与工具调用。

	Assistant assistant = AiServices.builder(Assistant.class).chatLanguageModel(model).chatMemory(chatMemory).tools(transactionService).build();

下面刨根问题追踪源码学习,向低层级概念进发。

Langchain4J之模型

在这里插入图片描述
在Langchain4J-core核心包中,分别实现了其核心能力:代理、数据集成、记忆能力、大模型、RAG等功能。
model就是关于大模型的包
在这里插入图片描述
它包含了:

聊天模型
文本向量
输入
输出
语言模型
等

LanguageModel是大模型接入的顶级接口,它定了最原始的大模型调用,输入提示词、输出文本。

public interface LanguageModel {/*** Generate a response to the given prompt.** @param prompt the prompt.* @return the response.*/
Response<String> generate(String prompt);/*** Generate a response to the given prompt.** @param prompt the prompt.* @return the response.*/
default Response<String> generate(Prompt prompt) {return generate(prompt.text());
}

}

如果LanguageModel是定义大模型的基础能力,那么TokenCountEstimator就是管理大模型Token的顶级接口,因为每个大模型都有token上限,当使用记忆能力时,不可能无限存储然后发送给大模型。
例如一个OpenAiLanguageModel它既要实现LanguageModel,也要实现TokenCountEstimator。

public class OpenAiLanguageModel implements LanguageModel, TokenCountEstimator {private final OpenAiClient client;
private final String modelName;
private final Double temperature;
private final Integer maxRetries;
private final Tokenizer tokenizer;

OpenAiLanguageModel的核心就是OpenAiClient,它基本就是一个OpenAiApi接口+OkHttpClient。

在这里插入图片描述
在这里插入图片描述
然后以大模型为核心,Langchain4J丰富了大模型更多的功能,比如输入的提示词及提示词模板,输出、结构化输出等,以及聊天模型的实现。
在这里插入图片描述
聊天模型是model包中的chat包,它的顶级接口ChatLanguageModel与LanguageModel类型,多了更多的行为定义,比如chat。

Langchain4J之记忆能力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/407164.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux | vim编辑器的使用技巧:自动缩进、补全括号、光标定位、批量注释

文章目录 vim编辑器的使用技巧1、配置自动缩进、自动显示行号、自动补全括号2、光标定位3、批量注释、解除注释批量注释&#xff1a;批量解除注释 vim编辑器的使用技巧 1、配置自动缩进、自动显示行号、自动补全括号 打开vimrc配置文件 vim ~/.vimrc //如果没有编辑权限的&…

140页满分PPT | 一套完整的数字化转型+蓝图路线图规划项目案例

这份PPT文档是一个全面而深入的IT蓝图规划和实施路线图&#xff0c;为某大型制造企业的信息化建设和发展提供了详尽的框架和指导。 1. 业务战略与IT战略对接 在数字化转型过程中&#xff0c;应从企业的业务战略出发&#xff0c;强调了IT战略规划的重要性&#xff0c;指出IT战…

【计算机三级-数据库技术】数据库及数据库对象

数据库及数据库对象 第一节 创建及维护数据库 一、SQL server数据库分类 1&#xff09;系统数据库&#xff08;系统自动创建&#xff09;&#xff1a; master、msdb、tempdb、model、resource 2&#xff09;用户数据库 保存与用户业务有关的数据。 二、SQL server数据库组成…

一建证书哪个专业好?一建各专业含金量排行一览表

2024年一建考试将于9月7日、8日举行&#xff0c;距离现在已经不足五个月&#xff0c;今年一建考试大纲全新修订&#xff0c;教材也随之大改&#xff0c;加之一建考试难度较大&#xff0c;相信考生友友们都已经开启备考了吧&#xff1f; 近期也有小伙伴在跟小佑提问&#xff0c…

Is it possible to modify OpenAI environments?

题意&#xff1a;“是否可以修改 OpenAI 环境&#xff1f;” 问题背景&#xff1a; There are some things that I would like to modify in the OpenAI environments. If we use the Cartpole example then we can edit things that are in the class init function but with…

[数据集][目标检测]agvs仓储机器人检测数据集VOC+YOLO格式967张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;967 标注数量(xml文件个数)&#xff1a;967 标注数量(txt文件个数)&#xff1a;967 标注类别…

想要畅玩《黑神话:悟空》?上赞奇云工作站,仅需3步,直面天命!

全世界畅玩《黑神话&#xff1a;悟空》的时候 一批受害者们也迎来了属于他们的“九九八十一难” 这个时候&#xff0c;天命人才意识到 原来世界上最远的距离&#xff0c;不是天涯海角 而是《黑神话&#xff1a;悟空》就在我面前&#xff0c;旁边的电脑却带不动 作为被广泛视…

超维机器人在工业与能源领域的具身智能探索和应用

具身智能&#xff08;Embodied AI&#xff09;是指机器人能够通过其物理形态与环境的交互&#xff0c;进行感知、学习、决策和执行&#xff0c;从而完成复杂任务的能力。具身智能强调机器人不仅要具备感知环境和分析数据的能力&#xff0c;还要能够通过身体的行为和物理互动来适…

Cesium 视频纹理

Cesium 视频纹理 话不多说&#xff0c;直接上代码 <video id"video_dom"><source src"./video.mp4" type"video/mp4" /></video>var videoElement document.getElementById("video_dom");videoElement.play();vie…

145. 二叉树的后序遍历(递归法)

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;题目&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 二&#xff1a;代码&#xff1a; /*** Definition for a bin…

多进程和多线程基础概念LINUX

进程和程序的区别 程序是静态的&#xff0c;它是保存在磁盘上的指令的有序集合&#xff0c;没有任何执行的概念进程是一个动态的概念&#xff0c;它是程序执行的过程&#xff0c;包括了动态创建、调度和销毁的整个过程 并行&#xff1a;在 cpu 多核的支持下&#xff0c;实现物…

Linux--网络层 IP协议

目录 0.往期文章 1.IP基本概念 2. IP协议报头格式 3.网段划分 两种网段划分的方式 为什么要进行网段划分 4.特殊的IP 地址 5.IP 地址的数量限制 6.私有 IP 地址和公网 IP 地址*** NAT技术 认识公网 运营商扮演的角色 7.路由 8.16位标识&#xff0c;3为标志和13位…

SpringCloud之一注册中心(Eureka)

一、Eureka概述 Eureka是Netflix公司开源的一个服务注册与发现的中间组件。 在微服务架构系统之中&#xff0c;我们经常提三个角色&#xff1a;注册中心 (Register)、服务提供者(Provider)、服务消费者(Consumer)。 1.注册中心&#xff1a;服务提供者可以将服务发布到注册中心…

ClkLog常见问题-埋点集成篇Sec. 1

本篇主要解答ClkLog使用过程中【埋点集成】阶段的常见问题。 1.【指标项数据统计】 问&#xff1a;数据概览无法看到数据。 答&#xff1a;如果数据概览所有指标项都没有数据&#xff0c;则需要先检查埋点数据是否接收成功&#xff1b;如果只是会话相关数据&#xff08;访问次数…

《基于 Spark 的平替药品智能推荐方法》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

大型物流运输无人机技术详解

随着科技的不断进步和电子商务的蓬勃发展&#xff0c;大型物流运输无人机作为未来物流体系的重要组成部分&#xff0c;正逐步从概念走向实际应用。这类无人机以其超大的载重能力、高效的运输效率和广泛的覆盖范围&#xff0c;为解决远距离、大批量货物运输难题提供了创新方案。…

电机知识汇总

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言1、电机发展史2、电机入门①、书籍②、视频③、开发文档④、博客 3、什么是步进电机4、基本结构和工作原理4、负载…

深入探讨量子计算领域在发展过程中所遇到的难题及其解决方案。

一、引言 量子计算作为未来科技的重要方向&#xff0c;其潜力巨大&#xff0c;但同时也面临着诸多技术挑战。这些挑战不仅制约了量子计算的进一步发展&#xff0c;也考验着科学家和工程师们的智慧和毅力。本文将探讨量子计算面临的主要技术挑战&#xff0c;并分析其可能的解决…

【前缀和算法】--- 一维和二维前缀和模板

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey 本文开始,博主开始讲解有关前缀和的算法&#xff0c;本篇博客我们先来了解一下有关前缀和的两个模板。 &#x1f3e0; 一维前缀和模板 &…

【YashanDB知识库】共享集群YAC换IP

【标题】共享集群YAC换IP 【需求分类】安装部署&#xff0c;配置变更 【关键字】安装部署&#xff0c;更换IP&#xff0c;运维&#xff0c;配置变更&#xff0c;高可用&#xff0c;YAC 【需求描述】客户需要将已经部署的YAC集群更换IP&#xff0c;从测试网段切换生产网段 【…