新闻详情

新闻详情

首页 / 资讯中心 / 详情

二、SpringAI+DeepSeek-模型(Model)

发布时间:2026/9/24 23:50:26来源:尧图网络
二、SpringAI+DeepSeek-模型(Model)
一、ChatModel 聊天模型核心1. 公共能力能力说明多模态文本/图片/PDF/音频/视频输入不同模型支持不一样Tools/Function Call函数调用让LLM调用Java本地方法查询外部接口、数据库流式处理FluxChatResponseSSE流式输出打字机效果重试spring.ai.retry.*全局重试配置指数退避可观测性链路追踪、指标、日志内置JSON输出两种模式简单JSON / JSON Schema强约束结构化输出本地部署Ollama 可本地跑模型DeepSeek/OpenAI是云端APIOpenAI兼容APIOllama、DeepSeek、vLLM都兼容OpenAI协议可以直接复用OpenAI客户端通用重试配置所有模型共享spring: ai: retry: max-attempts: 10 backoff: initial-interval: 2s multiplier: 5 max-interval: 3m on-client-errors: false # 4xx默认不重试2. DeepSeek 模型云端API依赖 starter自动配置dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-model-deepseek/artifactId /dependencyapplication.ymlspring: ai: deepseek: api-key: ${DEEPSEEK_API_KEY} # 环境变量注入不要硬编码 base-url: [https://api.deepseek.com](https://api.deepseek.com) chat: options: model: deepseek-chat # deepseek-reasoner为推理模型 temperature: 0.8 maxTokens: 2000关键特性双模型deepseek-chat通用对话deepseek-reasoner推理模型返回独立思维链CoTreasoningContent多轮对话注意不要把上一轮的reasoningContent塞回消息列表否则报400只保留最终回答文本进入上下文前缀补全DeepSeekAssistantMessage.prefixAssistantMessage(\python\n)强制模型输出指定代码块获取推理内容示例ChatResponse response chatModel.call(new Prompt(9.11 and 9.8 which bigger?, DeepSeekChatOptions.builder().model(DeepSeekApi.ChatModel.DEEPSEEK_REASONER.getValue()).build() )); DeepSeekAssistantMessage msg (DeepSeekAssistantMessage) response.getResult().getOutput(); String reasoning msg.getReasoningContent(); // 思考过程 String answer msg.getText(); // 最终答案手动创建客户端不使用自动配置DeepSeekApi deepSeekApi DeepSeekApi.builder().apiKey(apiKey).build(); DeepSeekChatOptions options DeepSeekChatOptions.builder().model(deepseek-chat).temperature(0.4).build(); DeepSeekChatModel chatModel DeepSeekChatModel.builder().deepSeekApi(deepSeekApi).defaultOptions(options).build();3. Ollama本地部署模型重点依赖starterdependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-ollama/artifactId/dependencyapplication.ymlspring:ai:ollama:base-url:[http://localhost:11434](http://localhost:11434)init:pull-model-strategy:when_missing# 可选 always / never / when_missing生产建议never提前ollama pullchat:options:model:llama3.2temperature:0.7num-ctx:2048# 上下文窗口keep-alive:5m# 模型驻留内存时长启动拉取模型ollama pull llama3.2支持HuggingFace GGUF模型ollama pull hf.co/xxx核心能力思考模式 Thinking Modedeepseek-r1/qwen3OllamaChatOptions.builder().model(deepseek-r1).enableThinking()// 开启思考.build();// 获取思考内容存在metadata thinkingStringthinkingresponse.getResult().getMetadata().get(thinking);若用OpenAI兼容端点对接ollama思考字段名称变成reasoningContent结构化输出两种模式.format(json)任意合法JSON结构不可控.outputSchema(jsonSchemaString)强约束生产推荐强制输出匹配JSON Schema搭配BeanOutputConverter直接把返回JSON转Java Record对象多模态llava系列模型支持传入图片MediavarimageResourcenewClassPathResource(test.png);UserMessageuserMessagenewUserMessage(描述图片,newMedia(MimeTypeUtils.IMAGE_PNG,imageResource));OpenAI兼容模式直接使用OpenAiChatModel对接ollama服务4. OpenAI ChatModelgpt系列兼容通用OpenAI协议依赖starterdependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-openai/artifactId/dependencyapplication.ymlspring:ai:openai:api-key:${OPENAI_API_KEY}base-url:[https://api.openai.com](https://api.openai.com)chat:options:model:gpt-4o-mini temperature:0.7区分推理模型参数普通模型(gpt4o/gpt3.5)maxTokenso1/o3推理系列maxCompletionTokens两者互斥不能同时设置重点多模态gpt4o支持图片、音频输入responseFormat支持JSON_OBJECT/JSON_SCHEMA强结构化输出extraBody向OpenAI兼容服务vLLM/Ollama/DeepSeek传递模型特有参数top_k、repeat_penalty推理内容官方OpenAI gpt o系列接口不返回reasoningContentDeepSeek R1/vLLM兼容接口才返回reasoningContent5. ChatController 通用示例三个模型写法几乎一样RestControllerpublicclassChatController{privatefinalChatModelchatModel;AutowiredpublicChatController(ChatModelchatModel){this.chatModelchatModel;}// 同步返回GetMapping(/ai/generate)publicMapString,Stringgenerate(RequestParam(defaultValue讲个笑话)Stringmessage){returnMap.of(generation,chatModel.call(message));}// 流式SSEGetMapping(/ai/generateStream)publicFluxChatResponsestream(RequestParam(defaultValue讲个笑话)Stringmessage){PromptpromptnewPrompt(newUserMessage(message));returnchatModel.stream(prompt);}}二、ImageModel 图像生成模型DALL·E顶层接口ImageModel入参ImagePrompt返回ImageResponseFunctionalInterfacepublicinterfaceImageModelextendsModelImagePrompt,ImageResponse{ImageResponsecall(ImagePromptrequest);}ImagePrompt包装多条ImageMessage ImageOptionsImageMessage文本提示词 权重weightImageResponseImageGeneration列表包含图片二进制/urlOpenAI DALL·E 配置spring:ai:openai:api-key:${OPENAI_API_KEY}image:options:model:dall-e-3size:1024x1024 quality:hd response-format:b64_json # url/b64_json代码示例ImageResponseresponseopenaiImageModel.call(newImagePrompt(一只浅金色小狗,OpenAiImageOptions.builder().quality(hd).N(1).height(1024).width(1024).build()));ImageGenerationgenresponse.getResult();byte[]imageBytesgen.getOutput().getImageBytes();三、ModerationModel 内容审核模型OpenAI Moderation检测文本是否包含违规内容暴力、色情、自残、仇恨言论ModerationPromptpromptnewModerationPrompt(待审核文本);ModerationResponseresponseopenAiModerationModel.call(prompt);Moderationresultresponse.getResult().getOutput();booleanflaggedresult.isFlagged();// 是否标记违规Categoriescategoriesresult.getCategories();// categories.isSexual() / isViolence() / isSelfHarm() 等
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

汽车电子底层软件开发:AUTOSAR与CAN总线实战解析 2026/9/24 23:59:54

汽车电子底层软件开发:AUTOSAR与CAN总线实战解析

1. 这门“汽车电子底层软件开发就业课”到底在教什么?——不是写个LED闪烁就能上岗的很多人看到“汽车电子底层软件开发就业课”这个标题,第一反应是:不就是嵌入式C语言单片机CAN通信?刷几道LeetCode、调通一个STM32 CAN收发例程&…

阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战 2026/9/24 23:59:54

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署 2026/9/24 23:59:54

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

阅读更多 →
AI元人文:从工具使用到思维重构的深度探索 2026/9/24 23:59:54

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

阅读更多 →
《AI Agent 场景应用 - MobileOpenClaw》第5-9节:会话上下文细化处理实战指南 2026/9/24 23:59:47

《AI Agent 场景应用 - MobileOpenClaw》第5-9节:会话上下文细化处理实战指南

文档教程后端 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助,请给予支持(关注、…

阅读更多 →
写出来的,和没写的——七个模块,一副骨头 2026/9/24 23:59:47

写出来的,和没写的——七个模块,一副骨头

「合金日记」第 85 篇 「小艾说」第 34 期 幕后弧(换弧开篇) 从「写谁」转向「怎么写」 专栏连载中 前篇:《听漏了,还是听深了——一个 a,一句禅》 模块 骨架 沉默 对位 骨头 没看过前篇也能读 没看过前八十…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞