当前位置: 首页 > news >正文

LangChain4j系列—OpenAI开发实例

一、引入Maven依赖

1、纯Java

<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>0.35.0</version>
</dependency>

2、Spring boot

<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai-spring-boot-starter</artifactId><version>0.35.0</version>
</dependency>

二、API Key

要使用OpenAI模型,您需要一个API密钥。你可以在这里创建一个。

如果您没有自己的OpenAI API密钥,不要担心。您可以暂时使用演示密钥,我们为演示目的免费提供:

String apiKey = "demo";

三、创建 OpenAiChatModel

1、纯Java

ChatLanguageModel model = OpenAiChatModel.builder().apiKey(System.getenv("OPENAI_API_KEY"))....build();

这将使用默认模型参数(例如gpt-3.5-turbo模型名称、0.7温度等)创建OpenAiChatModel的实例。通过在生成器中提供值,可以自定义默认模型参数。

2、Spring Boot

配置application.properties:

langchain4j.open-ai.chat-model.api-key=${OPENAI_API_KEY}
langchain4j.open-ai.chat-model.base-url=...
langchain4j.open-ai.chat-model.custom-headers=...
langchain4j.open-ai.chat-model.frequency-penalty=...
langchain4j.open-ai.chat-model.log-requests=...
langchain4j.open-ai.chat-model.log-responses=...
langchain4j.open-ai.chat-model.logit-bias=...
langchain4j.open-ai.chat-model.max-retries=...
langchain4j.open-ai.chat-model.max-completion-tokens=...
langchain4j.open-ai.chat-model.max-tokens=...
langchain4j.open-ai.chat-model.model-name=...
langchain4j.open-ai.chat-model.organization-id=...
langchain4j.open-ai.chat-model.parallel-tool-calls=...
langchain4j.open-ai.chat-model.presence-penalty=...
langchain4j.open-ai.chat-model.proxy.host=...
langchain4j.open-ai.chat-model.proxy.port=...
langchain4j.open-ai.chat-model.proxy.type=...
langchain4j.open-ai.chat-model.response-format=...
langchain4j.open-ai.chat-model.seed=...
langchain4j.open-ai.chat-model.stop=...
langchain4j.open-ai.chat-model.strict-schema=...
langchain4j.open-ai.chat-model.strict-tools=...
langchain4j.open-ai.chat-model.temperature=...
langchain4j.open-ai.chat-model.timeout=...
langchain4j.open-ai.chat-model.top-p=
langchain4j.open-ai.chat-model.user=...

请参阅上面的一些参数的描述。

此配置将创建OpenAiChatModel bean,它可以由AI服务使用,也可以在需要时自动连接,例如:

@RestController
class ChatLanguageModelController {ChatLanguageModel chatLanguageModel;ChatLanguageModelController(ChatLanguageModel chatLanguageModel) {this.chatLanguageModel = chatLanguageModel;}@GetMapping("/model")public String model(@RequestParam(value = "message", defaultValue = "Hello") String message) {return chatLanguageModel.generate(message);}
}

四、结构化输出

工具和JSON模式都支持结构化输出功能。

1、工具的结构化输出

要为工具启用结构化输出功能,请在构建模型时设置.strictTools(true):

OpenAiChatModel.builder()....strictTools(true).build(),

请注意,这将自动使所有工具参数都是必需的(在json模式中是必需的),并为json模式的每个对象设置additionalProperties=false。这是由于当前OpenAI的限制。

2、JSON模式的结构化输出

要为JSON模式启用结构化输出功能,请在构建模型时设置.responseFormat(“JSON_schema”)和.strictJsonSchema(true):

OpenAiChatModel.builder()....responseFormat("json_schema").strictJsonSchema(true).build(),

在这种情况下,AiServices不会在最后一条UserMessage的末尾追加“You must answer strictly In the following JSON format:…”字符串,而是将从给定的POJO创建JSON模式,并将其传递给LLM。请注意,这仅在方法返回类型为POJO时有效。如果返回类型是其他类型(如枚举或List<String>),则应用旧的行为(“You must answer strictly…”)。在不久的将来,将支持所有返回类型。

五、创建OpenAiStreamingChatModel

1、纯Java

OpenAiStreamingChatModel model = OpenAiStreamingChatModel.builder().apiKey(System.getenv("OPENAI_API_KEY"))....build();

2、Spring Boot

添加配置文件:

langchain4j.open-ai.streaming-chat-model.api-key=${OPENAI_API_KEY}
langchain4j.open-ai.streaming-chat-model.base-url=...
langchain4j.open-ai.streaming-chat-model.custom-headers=...
langchain4j.open-ai.streaming-chat-model.frequency-penalty=...
langchain4j.open-ai.streaming-chat-model.log-requests=...
langchain4j.open-ai.streaming-chat-model.log-responses=...
langchain4j.open-ai.streaming-chat-model.logit-bias=...
langchain4j.open-ai.streaming-chat-model.max-retries=...
langchain4j.open-ai.streaming-chat-model.max-completion-tokens=...
langchain4j.open-ai.streaming-chat-model.max-tokens=...
langchain4j.open-ai.streaming-chat-model.model-name=...
langchain4j.open-ai.streaming-chat-model.organization-id=...
langchain4j.open-ai.streaming-chat-model.parallel-tool-calls=...
langchain4j.open-ai.streaming-chat-model.presence-penalty=...
langchain4j.open-ai.streaming-chat-model.proxy.host=...
langchain4j.open-ai.streaming-chat-model.proxy.port=...
langchain4j.open-ai.streaming-chat-model.proxy.type=...
langchain4j.open-ai.streaming-chat-model.response-format=...
langchain4j.open-ai.streaming-chat-model.seed=...
langchain4j.open-ai.streaming-chat-model.stop=...
langchain4j.open-ai.streaming-chat-model.strict-schema=...
langchain4j.open-ai.streaming-chat-model.strict-tools=...
langchain4j.open-ai.streaming-chat-model.temperature=...
langchain4j.open-ai.streaming-chat-model.timeout=...
langchain4j.open-ai.streaming-chat-model.top-p=...
langchain4j.open-ai.streaming-chat-model.user=...

六、创建OpenAiModerationModel

1、纯Java

ModerationModel model = OpenAiModerationModel.builder().apiKey(System.getenv("OPENAI_API_KEY"))....build();

2、Spring Boot

langchain4j.open-ai.moderation-model.api-key=${OPENAI_API_KEY}
langchain4j.open-ai.moderation-model.base-url=...
langchain4j.open-ai.moderation-model.custom-headers=...
langchain4j.open-ai.moderation-model.log-requests=...
langchain4j.open-ai.moderation-model.log-responses=...
langchain4j.open-ai.moderation-model.max-retries=...
langchain4j.open-ai.moderation-model.model-name=...
langchain4j.open-ai.moderation-model.organization-id=...
langchain4j.open-ai.moderation-model.proxy.host=...
langchain4j.open-ai.moderation-model.proxy.port=...
langchain4j.open-ai.moderation-model.proxy.type=...
langchain4j.open-ai.moderation-model.timeout=...

七、创建OpenAiTokenizer

1、纯Java

Tokenizer tokenizer = new OpenAiTokenizer();
// or
Tokenizer tokenizer = new OpenAiTokenizer("gpt-4o");

2、Spring Boot

OpenAiTokenizer bean由Spring Boot启动器自动创建。

相关文章:

LangChain4j系列—OpenAI开发实例

一、引入Maven依赖 1、纯Java <dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>0.35.0</version> </dependency> 2、Spring boot <dependency><groupId&g…...

Java 中简化操作集合的方法

在日常 Java 开发中&#xff0c;我们经常需要操作集合&#xff0c;如 List、Set 和 Map。虽然 Java 提供了丰富的集合框架供开发者使用&#xff0c;但在实际编写业务逻辑时&#xff0c;如何简化集合操作、提高代码可读性和效率&#xff0c;依然是一个经常遇到的问题。特别是随着…...

ArcGIS Pro SDK (十七)宗地结构

ArcGIS Pro SDK (十七)宗地结构 环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0 宗地结构 1 获取活动记录 string errorMessage = await QueuedTask.Run(() => {...

D. Co-growing Sequence

传送门&#xff1a;Problem - 1547D - Codeforces 题意&#xff1a;给定一个 数组 a , 构造一个数组 b &#xff0c;使得 ( a[i] ^ b[i] ) & ( a[i 1] ^ b[ i 1] ) a[i] ^ b[i] 思路&#xff1a;&#xff08;二进制题目&#xff09; 设 a[i] ^ b[i] t 我们要让…...

docker配置加速器

阿里云 控制台》容器镜像服务》镜像工具》镜像加速器 复制地址&#xff1a;https://ywtoq7bz.mirror.aliyuncs.com 到&#xff1a;etc/docker下&#xff1a;vi daemon.json 格式&#xff1a; { "registry-mirrors": ["加速器地址"] } 注&#xff1…...

JS事件和DOM

1. DOM 1.1 基本概念 DOM&#xff0c;全称 Document Object Model&#xff0c;即文档对象模型。它是 Web 上最常用的 API 之一&#xff0c;是加载在浏览器中的文档模型&#xff0c;可以将文档表示为节点树&#xff08;或称 DOM 树&#xff09;&#xff0c;其中每个节点代表文…...

CAS 详解

目录 Java 中 CAS 是如何实现的? CAS 算法存在哪些问题? ABA 问题 循环时间长开销大 只能保证一个共享变量的原子操作 Java 中 CAS 是如何实现的? 在 Java 中&#xff0c;实现 CAS&#xff08;Compare-And-Swap, 比较并交换&#xff09;操作的一个关键类是Unsafe。 Un…...

AI大模型那么火,教你一键Modelarts玩转开源LlaMA(羊驼)大模型

近日&#xff0c; LlaMA(羊驼) 这个大模型再次冲上热搜&#xff01; LLaMA&#xff08;Large Language Model Meta AI&#xff09;&#xff0c;由 Meta AI 发布的一个开放且高效的大型基础语言模型&#xff0c;共有 7B、13B、33B、65B&#xff08;650 亿&#xff09;四种版本。…...

Spring AI Alibaba: 支持国产大模型的Spring ai框架

Spring AI &#xff1a;java做ai应用的最好选择 过去&#xff0c;Java在AI应用开发方面缺乏一个高效且易于集成的框架&#xff0c;这限制了开发者快速构建和部署智能应用程序的能力。 Spring AI正是为解决这一问题而生&#xff0c;它提供了一套统一的接口&#xff0c;使得AI功…...

ChatGPT4o、o1 谁才是最佳大模型?

如何选择合适的 ChatGPT 模型&#xff1f;OpenAI 更新细节与 GPTs 的深入解析 随着人工智能的发展&#xff0c;ChatGPT 已成为众多用户的强大助手&#xff0c;广泛应用于写作、编程、学习和商业等多个领域。然而&#xff0c;面对 OpenAI 提供的众多模型&#xff08;如 GPT-4、…...

[笔记] 关于CreateProcessWithLogonW函数创建进程

函数介绍 https://learn.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-createprocesswithlogonw BOOL CreateProcessWithLogonW([in] LPCWSTR lpUsername,[in, optional] LPCWSTR lpDomain,[in] …...

Ubuntu的Qt编译环境配置

1、找不到C和C编译器 利用run文件安装QT6.8.0和QT5.12.2版本后&#xff0c;打开QtCreator时&#xff0c;找不到编译器。 可在终端中查找gcc和g版本&#xff0c;如果没有就安装。 gcc --version g --version 如果没有就安装&#xff1a; sudo apt-get install gcc sudo apt-…...

12 django管理系统 - 注册与登录 - 登录

为了演示方便&#xff0c;我就直接使用models里的Admin来演示&#xff0c;不再创建用户模型了。 ok&#xff0c;先做基础配置 首先是在base.html中&#xff0c;新增登录和注册的入口 <ul class"nav navbar-nav navbar-right"><li><a href"/ac…...

2020年计算机网络408真题解析

第一题&#xff1a; 解析&#xff1a;OSI参考模型网络协议的三要素 网络协议的三要素&#xff1a;语法 &#xff0c;语义&#xff0c;同步&#xff08;时序&#xff09; 语法&#xff1a;定义收发双方所交换信息的格式 语法&#xff1a;定义收发双方所要完成的操作 网页的加载 …...

速盾:cdn高防服务器防火墙的特性是什么?

CDN高防服务器防火墙是一种专门为互联网应用提供安全防护的网络安全设备。它采用先进的技术和算法&#xff0c;通过对网络流量进行过滤和检测&#xff0c;以防止恶意攻击和非法访问&#xff0c;保障网络服务的可用性和安全性。CDN高防服务器防火墙的特性主要包括以下几个方面&a…...

小程序分包和预加载

一、目的 分包的目的&#xff1a; 提升小程序的首屏加载速度&#xff0c;其原理和PC端网页的路由懒加载非常类似。即当我们第一个打开一个小程序的时候&#xff0c;只加载主包以及一些公共的资源&#xff0c;当调到某个页面的时候&#xff0c;在加载该页面所在的分包&#xf…...

【MATLAB 串口调试+虚拟串口测试】

文章目录 前言一、matlab 串口二、测试串口1.从系统中获取串口号2.避免串口打开被占用3. 安装虚拟串口4. 打开串口助手和MATALB 进行测试 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 提示&#xff1a;以下是本篇文章正文…...

mac 安装最新版nginx

1. clone最新版本源代码&#xff1a; git clone https://github.com/nginx/nginx.git 2. 下载PCRE 没有PCRE那我们就下&#xff0c;下载地址&#xff1a;https://sourceforge.net/projects/pcre/files/pcre/&#xff0c;笔者下载的pcre-8.45.zip&#xff0c;下载之后解压到ngi…...

极氪汽车困局:营销频繁车、产品力不足

“ 极氪汽车的“车上吃火锅”营销活动虽登上热搜&#xff0c;但因频繁忽视老用户和产品力不足的争议&#xff0c;并未赢得消费者好感&#xff0c;反而加剧负面印象。 ” 科技新知 原创 作者丨颜瞾 编辑丨蕨影 近日&#xff0c;背靠吉利集团的极氪…...

Icecream 与 Python 日志库及性能分析整合指南

简介 Icecream 是一个用于简化 Python 调试过程的库&#xff0c;它允许开发者轻松打印变量名和它们的值。Python 的 logging 库则提供了一个强大的日志记录系统&#xff0c;用于跟踪应用程序的运行情况。而性能分析则是评估代码执行效率的重要手段。本指南将介绍如何将 Icecre…...

CSDN博客批量下载器重构实战:MVC架构下的智能爬虫解决方案

CSDN博客批量下载器重构实战&#xff1a;MVC架构下的智能爬虫解决方案 【免费下载链接】CSDNBlogDownloader 项目地址: https://gitcode.com/gh_mirrors/cs/CSDNBlogDownloader 在技术博客内容日益成为开发者知识体系核心的时代&#xff0c;网络内容的不稳定性与知识管…...

MAA明日方舟助手:5步配置实现游戏日常全自动化

MAA明日方舟助手&#xff1a;5步配置实现游戏日常全自动化 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode.co…...

【亲测免费】 ST官方开源电机库FOC5.0:电机控制的利器

ST官方开源电机库FOC5.0&#xff1a;电机控制的利器 【下载地址】ST官方开源电机库FOC5.0下载仓库 ST官方开源电机库FOC5.0 下载仓库本仓库提供ST官方开源的电机库FOC5.0的资源文件下载 项目地址: https://gitcode.com/open-source-toolkit/a21b5 项目介绍 在电机控制领…...

【亲测免费】 提升数据传输效率:AccessDatabaseEngine_X64 2010 安装包推荐

提升数据传输效率&#xff1a;AccessDatabaseEngine_X64 2010 安装包推荐 【下载地址】AccessDatabaseEngine_X642010安装包 本仓库提供了一个名为 AccessDatabaseEngine_X64_2010.rar 的资源文件下载。该文件是 Microsoft Access 2010 数据库引擎的可再发行程序包&#xff0c;…...

不只是远程桌面:用向日葵在Ubuntu上实现无人值守文件传输与SSH隧道

超越远程桌面&#xff1a;向日葵在Ubuntu上的高阶自动化实践 当大多数人提起向日葵时&#xff0c;第一反应往往是"远程控制软件"。但这款工具的实际能力远不止于此——在开发者手中&#xff0c;它可以成为打通内外网的生产力中枢。想象这样一个场景&#xff1a;你正在…...

避坑指南:CubeMX配置STM32F429三重ADC时,ADC2/3的DMA请求为啥点不了?附手动开启代码

STM32F429三重ADC配置疑难解析&#xff1a;当CubeMX无法启用ADC2/3的DMA请求时如何手动突破限制 在嵌入式开发中&#xff0c;STM32系列微控制器因其丰富的外设资源而备受青睐&#xff0c;其中ADC&#xff08;模数转换器&#xff09;模块的性能直接影响信号采集系统的精度与速度…...

别再瞎算了!用Excel 5分钟搞定18650锂电池续航与充电时间(附免费模板)

别再瞎算了&#xff01;用Excel 5分钟搞定18650锂电池续航与充电时间&#xff08;附免费模板&#xff09; 每次DIY项目做到最后阶段&#xff0c;总会遇到那个灵魂拷问&#xff1a;"这电池到底能用多久&#xff1f;"上周我的智能花盆项目就差点翻车——按照理论值计算…...

电路分析基础(2)

受控源 基本概念 理想受控源模型...

AzurLaneLive2DExtract:碧蓝航线Live2D资源提取的完整指南

AzurLaneLive2DExtract&#xff1a;碧蓝航线Live2D资源提取的完整指南 【免费下载链接】AzurLaneLive2DExtract OBSOLETE - see readme / 碧蓝航线Live2D提取 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneLive2DExtract 想要从碧蓝航线游戏中提取精美的Live2D…...

算力基石:CPU、GPU与嵌入式AI的技术逻辑与融合发展

在人工智能全面普及的时代&#xff0c;算力已经成为数字产业发展的核心驱动力。从日常使用的智能手机、家用电脑&#xff0c;到云端大模型、智能汽车、工业传感设备&#xff0c;各类智能终端的运转都离不开处理器的算力支撑。其中&#xff0c;CPU作为通用计算核心、GPU作为并行…...