当前位置: 首页 > 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启动器自动创建。

http://www.lryc.cn/news/465336.html

相关文章:

  • Java 中简化操作集合的方法
  • ArcGIS Pro SDK (十七)宗地结构
  • D. Co-growing Sequence
  • docker配置加速器
  • JS事件和DOM
  • CAS 详解
  • AI大模型那么火,教你一键Modelarts玩转开源LlaMA(羊驼)大模型
  • Spring AI Alibaba: 支持国产大模型的Spring ai框架
  • ChatGPT4o、o1 谁才是最佳大模型?
  • [笔记] 关于CreateProcessWithLogonW函数创建进程
  • Ubuntu的Qt编译环境配置
  • 12 django管理系统 - 注册与登录 - 登录
  • 2020年计算机网络408真题解析
  • 速盾:cdn高防服务器防火墙的特性是什么?
  • 小程序分包和预加载
  • 【MATLAB 串口调试+虚拟串口测试】
  • mac 安装最新版nginx
  • 极氪汽车困局:营销频繁车、产品力不足
  • Icecream 与 Python 日志库及性能分析整合指南
  • 请解读下面的程序:pat =re.compile(r‘\d+‘)res = pat.search(‘www.ddd996.com‘)res.group()
  • Fibonacci任意一位的值得算法
  • gbn,sr和tcp的区别
  • FastGPT本地开发 之 通过Navicat管理MongoDB、PostgreSQL数据库
  • hardhat部署智能合约
  • 界面控件DevExtreme中文教程 - 如何与Amazon S3和Azure Blob存储集成?
  • 【ERROR】ubuntu source: not found
  • 聚焦IOC容器刷新环节postProcessBeanFactory(BeanFactory后置处理)专项
  • 配置nginx服务通过ip访问多网站
  • 银河麒麟V10设置QT开发程序开机自启动
  • RabbitMQ高级特性详解