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

Langchain4j 实战 【AI代码生成平台】:接入deepseek,开发AI服务并实现结构化输出

大模型接入

大模型有很多种类,Langchain4j也支持了市面上比较出名的大模型,如ChatGPT,Deepseek,Claude等。虽然国外的AI可能会有更好的效果,但因操作的不便性和较高的消费没有必要在学习阶段使用这些大模型,这篇文章将以deepseek大模型为例子演示如何接入大模型。

图为官网上对不同大模型的支持程度。

ProviderStreamingTools (sync/streaming/partial/complete)JSON SchemaJSON ModeThinking (Reasoning)Supported Modalities (Input)ObservabilityCustomizable HTTP ClientLocal DeploymentSupports Native ImageComments
Amazon Bedrock✅/✅/❌/✅text, image, PDF
Anthropic✅/✅/✅/✅text, image
Azure OpenAI✅/✅/✅/✅text, image
ChatGLMtext
DashScope✅/✅text, image, audio
GitHub Models✅/✅/🆘/🆘🔜 #1911text, image
Google AI Gemini✅/✅/❌/✅text, image, audio, video, PDF
Google Vertex AI Gemini✅/✅/❌/✅text, image, audio, video, PDF
Google Vertex AI PaLM 2text
Hugging Facetext
Jlama✅/✅/🆘/🆘text
GPULlama3.javatext
LocalAI✅/✅text, image, audio
Mistral AI✅/✅/❌/✅text, image
Ollama✅/✅/❌/✅text, image
OpenAI✅/✅/✅/✅✅ (DeepSeek)text, image, audio, PDFSee OpenAI-Compatible Language Models (Ollama, LM Studio, GPT4All, Docker Model Runner, etc.)See OpenAI-Compatible Language Models(Groq, ...)
OpenAI Official✅/✅/✅/✅text, image, audio, PDFSee OpenAI-Compatible Language ModelsSee OpenAI-Compatible Language Models
Oracle Cloud Infrastructure GenAI✅/✅text, image
Qianfan✅/✅text
Cloudflare Workers AItext
Zhipu AI✅/✅text, image
watsonx.ai✅/✅/✅/✅✅ (Granite)text, image

首先要进入deepseek开放平台来注册账号,获取到自己的API key。接下来要进入Java程序引入依赖,编写yml文件。

在pom中添加文件

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

在yml文件中编写配置

# AI
langchain4j:open-ai:chat-model:base-url: https://api.deepseek.comapi-key: 你先前注册的APIkeymodel-name: deepseek-chatlog-requests: truelog-responses: true

这样大模型就已经介入了,接下来进入Java代码开发AI Service。

Java开发

首先创建AiCodeGeneratorService接口,里面直接写两个生成代码的方法,对应两个生成代码的方式。HtmlCodeResult 与 MultiFileCodeResult 为结构化输出返回的格式,将在下文详细讲解。@SystemMessage即指定系统提示词存放的位置,使用户的prompt结合系统提示词输入。

接着编写工厂类初始化AI服务。

工厂需要@Configuration来标记其为配置类,将 AiCodeGeneratorService 设为Bean使其被Spring注册。上文的ChatModel已经在yml文件中配置好了。

这样基本的会话功能就已经成型了,但如果直接返回输出的字符串的话不方便保存,因此要将大模型返回的输出结构化。

结构化输出

这就是上文接口返回的对象的内容,即LLM结构化输出后的内容拆分后分别对应的部分。

但如果只是将返回值从String改为结构化的对象,结构化输出的结果依旧是不准确的,因此为了让Langchain4j更方便地结构化输出,必须采取一些优化措施。

优化

1)设置max_tokens:

需要合理设置 max_tokens 参数,防止 JSON 字符串被中途截断。并在yml文件中配置。

langchain4j:open-ai:chat-model:max-tokens: 8192

2)添加字段描述

就如我上文写的返回对象一样,在对象和字段上加@Description注解,在其中说明对象及其字段对应的含义,使LLM更方便地理解。

3)配置:

可以添加这个配置选项

langchain4j:open-ai:chat-model:strict-json-schema: trueresponse-format: json_object

4)系统提示词

在系统提示词中明确说明输出的是JSON格式。

以上AI服务的基本功能就已经开发完成,可以对其进行对话测试。

http://www.dtcms.com/a/557160.html

相关文章:

  • DNR6521x_VC1:革新音频体验的AI降噪处理器
  • 长沙做网站的公司哪家最好永久有效的代理ip
  • 技术准备九:FFmpeg
  • Jenkins 实战4:集群配置与分布式构建
  • 一人开公司做网站创业企业网站建设总结报告
  • android 15.0 app应用安装黑名单
  • N-158基于微信小程序学生社团管理系统
  • LeetCode算法日记 - Day 89: 最长递增子序列
  • 两学一做 网站帮别人建网站赚钱吗
  • 2025江苏省职业院校技能大赛网络系统管理赛项模块A:网络构建卷I(未公开)
  • 鸿蒙工程结构、开发指南
  • Python为什么能成为Ubuntu官方支持的脚本语言?
  • Studio Drummer 深度指南:从采样逻辑到风格化创作的实战手册
  • 一个专门做试题的网站商品seo关键词优化
  • 汽车ECU测试中边界值方法
  • 微信小程序开发工具软件网络优化策划书
  • 【GSR】皮肤电反应 数据分析全流程教程
  • 现代Python开发环境搭建(VSCode + Dev Containers)
  • 网站模版如何使用个人网站经营性备案查询
  • 理解计算机系统_程序计数器PC的实现
  • 在Unity中运行Yolo推理
  • php+redis基本操作及操作说明
  • 神经网络补充知识
  • 怎么在网站后台删除图片vps搭建网站教程
  • MySQL主从数据一致性校验工具:pt-table-checksum 详解
  • 源码分享:AI照片风格化小程序
  • 哪些行业做网站的多如何做二级域名子目录网站
  • jQuery Mobile 面板
  • Vulfocus---shiro反序列化漏洞
  • 搭建以Node-RED为基础的“小快灵”智能工厂OT底座的实现框架