第 5 章 · ChatModel 与 Provider

自动化上位机开发C#100例:如何用面向对象的方式封装雷赛运动控制卡EtherCAT总线卡(C#代码) 自动化上位机开发C#100例:雷赛运动控制卡EtherCAT总线卡C#封装类。 阅读详情

版本:Spring AI 2.0.1

目标:弄清 ChatModel 契约、常见 Provider 如何选型,以及为什么教程常用 OpenAI Options 当标本。 ChatClient 解决「怎么发请求」;本章解决「请求最后落到哪家模型实现」。


5.1 ChatClient 与 ChatModel:先分清两层

业务日常优先用 ChatClient;ChatModel 是抽象层的聊天入口。两者共用同一套 Message / Prompt / ChatResponse,只是装备不同:

ChatClientChatModel
层次应用层抽象层
擅长DSL、默认值、Advisors、Tools、entity薄调用、call / stream
典型场景Controller / 领域服务图节点、批处理、单测 mock

口诀:

业务优先 ChatClient;需要更薄或更可控时,再直接用 ChatModel。 换 Provider 时,尽量只换 starter / Options / Bean,不改业务主路径。


5.2 ChatModel 契约:call 与 stream

ChatModel 同步核心是:

ChatResponse call(Prompt)

此外还有便捷重载,例如 call(String) / call(Message...),本质只是帮你组装 Prompt。

2.0 起默认选项优先通过 getOptions() 获取;旧的 getDefaultOptions() 已废弃。

流式能力来自 StreamingChatModel(ChatModel 通常一并实现):

Flux<ChatResponse> stream(Prompt)

若实现并未真正支持流式,调用可能直接抛出不支持异常。ChatClient.stream() 最终也会落到这里。

同步调用(完整示例)

import java.util.List;
​
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
​
ChatResponse response = chatModel.call(
        new Prompt(
                List.of(
                        new SystemMessage("用中文简要回答"),
                        new UserMessage("ping")
                ),
                chatModel.getOptions().mutate()
                        .temperature(0.0)
                        .build()
        )
);
​
String text = response.getResult().getOutput().getText();

便捷写法:

String text = chatModel.call("你好");

与 ChatClient 对照(同模型、同默认选项时语义接近):

String a = chatModel.call("你好");
String b = chatClient.prompt("你好").call().content();
// ChatClient 多了 Advisor、Tools、entity 等装备栏

流式调用

中间帧可能没有完整 Generation / Usage,读取增量文本时要做空判断:

import reactor.core.publisher.Flux;
​
import org.springframework.ai.chat.model.Generation;
import org.springframework.ai.chat.prompt.Prompt;
​
Flux<String> tokens = chatModel.stream(prompt)
        .map(cr -> {
            Generation g = cr.getResult();
            return g == null || g.getOutput() == null
                    ? ""
                    : g.getOutput().getText();
        })
        .filter(s -> s != null && !s.isEmpty());

完整 Usage 更常见于结束帧;不要假设每一帧都有 token 统计。


5.3 不只是 Chat:同源模型接口

Spring AI 在模型层还有一组平行抽象。选型时不要只盯着 Chat,但也不必在本章一次学完:

接口典型用途
EmbeddingModel文本 / 文档向量化(检索前置)
ImageModel文生图等
TextToSpeechModel / TranscriptionModel语音合成与转写;2.0.1 强化了流式路径
ModerationModel内容审核

Embedding 契约可先记成:

EmbeddingResponse call(EmbeddingRequest)
float[] embed(String) / embed(Document)

Image:

ImageResponse call(ImagePrompt)

音频注意:OpenAI 的流式 Speech 在 2.0.1 更接近真实音频分块,不要再习惯性地 blockFirst() 当成整段结果。

本章主线仍是 ChatModel + Provider;其它模态接口只要建立「同源、分 starter」的印象即可。


5.4 Provider 怎么选

Provider 实现按模块拆分,再通过对应 spring-ai-starter-model-* 引入。不必先背完整清单,按场景选:

只要对话 Anthropic、DeepSeek、Bedrock Converse、Google GenAI、Mistral、Ollama、OpenAI 都是常见选项。

要尽量全的模态 OpenAI 通常最省事:Chat、Embedding、Image、Speech、Transcription、Moderation 较集中。很多兼容网关也借用这套 starter,只改 base-url / api-key / model。

走本地 Chat / Embedding 可看 Ollama;只要本地 Embedding,也可看 Transformers(DJL)或 PostgresML。

走特定云生态

需求常见选择注意
ClaudeAnthropicOptions 有自家字段
Gemini 生态Google GenAIChat / Embedding / Image 分 starter
AWSBedrock Converse(Chat)Embedding 可能在另一套模块
Mistral 生态Mistral AI升级后旧模型常量可能被清理

只要画图或 TTS Image 可看 OpenAI / Stability / Google GenAI Image;TTS 可看 OpenAI Speech / ElevenLabs。

读能力表时记住一句:

表上的「支持」指 Spring AI 模块实现,不保证每个兼容网关都开全。


5.5 为什么常用 OpenAI 当标本

spring-ai-starter-model-openai 把多种模态收在同一条学习路径里:

  • OpenAiChatModel

  • OpenAiEmbeddingModel

  • OpenAiImageModel

  • OpenAiAudioSpeechModel / OpenAiAudioTranscriptionModel

  • OpenAiModerationModel

跟通 OpenAI 后,再看 Anthropic、Ollama 等会快很多:差异主要在 client 与 Options,不在 ChatClient DSL。

依赖与配置(最小回顾)

<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      base-url: https://api.openai.com   # 兼容网关时改这里
      chat:
        options:
          model: gpt-4o-mini
          temperature: 0.7

Options 分组

import org.springframework.ai.openai.OpenAiChatOptions;
​
OpenAiChatOptions options = OpenAiChatOptions.builder()
        .model("gpt-4o-mini")
        .temperature(0.2)
        .maxTokens(512)
        .strict(false)                 // 2.0.1 默认更偏向 false
        .parallelToolCalls(true)
        .streamOptions(OpenAiChatOptions.StreamOptions.builder()
                .includeUsage(true)
                .build())
        .build();

字段可以粗分成几组:

分组常见字段
连接baseUrl、凭证、组织 ID、超时、代理、自定义 Header;Azure / GitHub Models 一类部署开关
生成model、temperature、topP、maxTokens、stop、seed
工具与结构化toolChoice、parallelToolCalls、strict、responseFormat
其它输出模态、音频参数、reasoning 相关旋钮、extraBody、streamOptions

在 ChatClient 中覆盖单次选项

String text = chatClient.prompt()
        .user(question)
        .options(OpenAiChatOptions.builder()
                .temperature(0.0)
                .maxTokens(256)
                .build())   // 别漏 build()
        .call()
        .content();

单次 .options(...) / defaultOptions 会覆盖自动配置默认值;冲突时通常以更靠近请求的为准。


5.6 其它 Provider 的 Options 习惯

原则:

ChatClient 代码尽量依赖 ChatOptions 的通用字段;供应商特有字段再落到具体 Builder,避免把一家的专用配置写进另一家路径。

常见习惯:

Provider习惯
Ollama本地模型名、上下文长度等;模型需先 pull
AnthropicmaxTokens、thinking 一类能力
Mistral注意升级后旧模型常量可能被清理
Google GenAIChat / Embedding / Image 分模块引入;加了 Chat starter ≠ 自动有 Image
Bedrock Converse与 AWS 凭证链集成;Chat 与 Embedding 不要找错模块

Google 可以记成三件套:

…-google-genai            → Chat
…-google-genai-embedding  → Embedding
…-google-genai-image      → Image

Ollama 最小配置示例:

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        options:
          model: qwen2.5:7b
<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>

5.7 多模型 Bean

一个应用里同时存在多个 ChatModel 完全合法。注入时用 @Qualifier 或明确 Bean 名;更干净的做法,是为每个模型各建一个 ChatClient。

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
​
@Configuration
class MultiModelConfig {
​
    @Bean
    ChatClient primaryChatClient(ChatModel chatModel) {
        // 默认主模型(由当前启用的 model starter 自动配置)
        return ChatClient.builder(chatModel)
                .defaultSystem("你是主助手")
                .build();
    }
​
    @Bean
    ChatClient ollamaChatClient(
            @Qualifier("ollamaChatModel") ChatModel ollamaChatModel) {
        return ChatClient.builder(ollamaChatModel)
                .defaultSystem("你是本地助手")
                .build();
    }
}

服务里按场景选用:

@Service
class AnswerService {
​
    private final ChatClient primaryChatClient;
    private final ChatClient ollamaChatClient;
​
    AnswerService(
            ChatClient primaryChatClient,
            @Qualifier("ollamaChatClient") ChatClient ollamaChatClient) {
        this.primaryChatClient = primaryChatClient;
        this.ollamaChatClient = ollamaChatClient;
    }
​
    String answer(String q, boolean local) {
        ChatClient client = local ? ollamaChatClient : primaryChatClient;
        return client.prompt().user(q).call().content();
    }
}

Bean 名称以各自动配置为准;不确定时可在启动后查看容器中的 Bean 定义。同时启用多个 model starter 时,注意谁是 @Primary,避免注入歧义。


5.8 什么时候直接用 ChatModel

优先 ChatClient。直接使用 ChatModel 更适合这些场景:

  1. 状态图 / 自研编排节点里的薄调用

  2. 需要对 Prompt 做更细控制的批处理

  3. 自定义 Advisor 单测中的 mock

  4. 不需要 DSL、只要一次 call(Prompt) 的内部服务

不适合的理由如果只是「想少写几行」,通常仍应留在 ChatClient。


5.9 重试、错误与兼容网关

模型自动配置可能配合重试机制处理瞬时 HTTP 错误。Options 里的 timeout / maxRetries 与之叠加时,要两边一起看,避免重试过于激进。

HTTP / 现象先查什么
401密钥、环境变量名、凭证链
400schema / strict / 不支持的参数
404模型名错误;Ollama 尚未 pull
429限流,需要退避
超时timeout 过短,或代理缓冲不当

用 OpenAI starter 接第三方兼容网关时,建议逐项核对:

  1. base-url 是否包含正确 path 前缀(有的需要 /v1)

  2. 模型名是否为网关定制 ID

  3. 是否支持 tools / stream / JSON schema

  4. Usage 字段是否完整

  5. 多模态字段是否被网关剥离

「能 chat」不等于「tools / structured / vision 都通」——兼容层最容易在这里踩坑。


5.10 观测(本章边界)

模型层有独立的 Observation 体系,与 ChatClient 观测分层。调用次数、耗时、token 等会在模型调用点打点。

本章只需建立印象:换 Provider 不应丢掉观测挂钩;统一运维、日志脱敏与安全策略属于工程化专题,这里不展开。


5.11 常见坑(本章范围)

现象先查什么
注入多个 ChatModel 冲突是否多个 starter 同时启用;谁是 @Primary;是否该用 @Qualifier
Options 不生效是否 .build();单次 options 是否被更外层覆盖;是否写错了厂商 Options 类型
流式空帧 / NPEgetResult() / getOutput() 是否为空;Usage 是否只在结束帧
Ollama 404模型是否已拉取;base-url 与 model 名是否一致
兼容网关「半通」tools / stream / schema 是否被网关阉割;path 前缀是否缺 /v1
加了 Google Chat 却没有 ImageImage 是另一个 starter

5.12 本章小结

到这里应能:

  1. 说明 ChatModel / stream 与 ChatClient 的关系,并判断何时该直接用 ChatModel

  2. 按场景选择 Provider,而不是背模块名

  3. 用 OpenAI Options 理解连接、生成、工具与结构化旋钮,并正确覆盖单次选项

  4. 处理多模型注入,以及兼容网关 / 常见 HTTP 错误的排查顺序

掌握抽象层入口后,业务代码可以稳定面向 ChatClient / ChatModel 编程;换模型时主要改 starter 与 Options,而不是推翻调用链。

汽车电子RTOS--AUTOSAR OS AUTOSAR OS(AUTomotive Open System ARchitecture Operating System)是AUTOSAR(汽车开放系统架构)标准中的一个重要组件,它是一个专门为汽车电子控制单元(ECU)设计的实时操作系统(RTOS)。AUTOSAR OS旨在提供一个标准化的软件平台,以促进不同供应商和汽车制造商之间的组件复用和协同开发,提高软件质量和降低成本。 阅读详情

相关推荐

《广告核心指标驱动的AI投放系统:从数据洞察到智能决策的全链路优化》

本方案通过构建广告核心指标驱动的AI投放系统,实现从数据采集到智能决策的全链路自动化。

专注Java领域与微服务架构,热爱人工智能与深度学习 1068

LangChain:ChatModel 聊天模型与可配置模拟器

聊天模型与传统的LLM不同,它以结构化消息对象作为输入和输出,支持多轮对话和工具调用。文章详细讲解了消息类型(SystemMessage、HumanMessage、AIMessage等)、模型分类(真实模型和可配置模拟器)以及与LLM的区别。此外,还介绍了通过API定义聊天模型的方法,包括ChatDeepSeek的使用和init_chat_model工厂函数,后者支持运行时动态配置模型参数。文章提供了多个代码示例,帮助理解如何创建和配置聊天模型。

yue_2899799318的博客 219

Unity分包下载实战:AssetBundle+CDN+热更新全链路指南

分包下载是移动应用资源管理的核心技术,本质是将大体积安装包拆解为按需加载的独立资源单元,以解决用户安装意愿低、首屏启动慢、热更新不可控等关键问题。其底层依赖资源打包机制(如Unity AssetBundle)、全球分发网络(CDN)与安全热更新策略三者协同。AssetBundle提供资源隔离与依赖管理能力,CDN保障低延迟高可用下载,而热更新策略则决定版本控制、灰度发布与异常恢复的工程鲁棒性。该方案广泛应用于中重度游戏、大型工具类App及需要频繁内容迭代的商业项目,直接提升次日留存、过审成功率与用户在线时长

weixin_29762151的博客 354

Mem0 Vercel AI Provider 完整 API 参考:createMem0、Mem0Provider 与记忆增强模型配置指南

`@mem0/vercel-ai-provider` 是 Mem0 面向 [Vercel AI SDK](https://link.gitcode.com/i/b09af26345ff42b84e241dba1c1796a5) 的记忆增强 Provider 层,它把 LLM 调用与 Mem0 持久化记忆读写无缝衔接:每次生成前自动检索历史记忆并注入提示词,生成后自动把对话写回记忆库。本文以 [pr

gitblog_00072的博客 936

从零构建腾讯滑块验证码破解引擎:逆向工程与实战对抗

本文深入解析腾讯滑块验证码(原天御验证码)的防护机制,包括环境感知层、行为分析层和验证决策层的核心技术。通过JSVMP虚拟机保护、轨迹验证算法和动态加密体系,腾讯验证码实现了高效的人机识别。文章还提供了安全研究实践指南,涵盖环境模拟和验证码识别方案,并探讨了防御对抗的演进趋势与合规研究建议。

rl6adventurer的博客 830

STM32与HT7038的高精度电能计量系统设计与实现

本文详细介绍了基于STM32微控制器与HT7038三相电能计量芯片的高精度电能计量系统设计与实现。文章从项目选型出发,深入剖析了硬件电路设计、SPI驱动开发、芯片校准及系统集成等关键环节,为智能电表、能源监控等应用提供了高性价比且稳定的国产化解决方案。

pytorch8learner的博客 389

Solon AI 的 ChatModel 写死本地 Ollama?TaoToken 这样改 apiUrl 和 provider

把 Solon AI 里 ChatModel.of("http://127.0.0.1:11434/api/chat").provider("ollama") 的 apiUrl 换成 https://taotoken.net/api、provider 换成 openai,即可切到 TaoToken。ChatModel、EmbeddingModel、AI-Flow YAML 三处统一同一把 Key,换模型只改 model 字段,不用重编译。TaoToken 官网:https://taotoken.net/?u

weixin_35753431的博客 7

高数 | 【极限与等价无穷小】两个重要极限 & 经典错误 & 什么情况下求极限可以直接带入

一. 第一个重要极限 二. 第二个重要极限 三. 导数定义式 全文见【高等数学】两个重要的极限 - 知乎

"You are worthy! You can do it!" 6万+

Spring AI 1.x 系列【49】可观测性体系:从 ZhiPuAiChatModel 看 ChatModel 观测机制

Spring AI 的可观测性体系基于 Micrometer Observation 实现,为所有 ChatModel 提供统一的 Tracing、Metrics、Logging 能力。ZhiPuAiChatModel 作为 ChatModel 接口的实现类,无需编写任何可观测性专属代码,只需遵循 Spring AI 定义的标准模板即可自动获得完整的可观测性。

记录知识、锤炼自我 492

AI代码标注专家Prompt指令的最佳实践

AI代码标注专家 Prompt 可作为项目级别提示词使用,专门负责为 AI 生成的代码添加特定的注释标记,然后基于 Node 脚本可以初步统计出 AI 代码占比。

💻 Code:TypeScript / Engineering 🤖 AI:Prompt Optimization / Context Memory / Coding Agents 615

基于 SoC 的卷积神经网络车牌识别系统设计(1)引言

通过 CPU 软核 IP 在纯 FPGA 平台上构建一个 AI SoC 卷积神经网络车牌识别系统,其中,缩放、填充层、卷积层、ReLU、池化层、全连接层 IP 都是 Verilog 设计的,同时集成了各种高性能的 IP。这是最具挑战性的 AI SoC 芯片设计项目,集成了 Python 卷积神经网络代码、Verilog 卷积神经网络硬件设计、ARM SoC 设计、ARM 与 FPGA 的交叉编译流程等等。这不仅是科研学习、集创竞赛、秋招求职的一个极具优势的精彩项目,也是目前最火热的芯片行业之中的一个...

新芯设计的博客 3780

jFinal 用 SolonMCP 开发 MCP,ChatModel 的 apiUrl 改走 TaoToken

把 McpClientTest 里 ChatModel.of(apiUrl) 的 apiUrl 从 http://127.0.0.1:11434/api/chat 换成 https://taotoken.net/api,provider 由 ollama 改 openai,model 换成 TaoToken 可用模型 ID,并补上 .apiKey(...),McpClientProvider 的 /mcp/sse 与 defaultToolsAdd(toolProvider) 保持不动。Key 与 Base

weixin_31163455的博客 55

基于STM32设计的掌上游戏机(运行NES游戏模拟器)详细开发过程

利用STM32单片机移植NES游戏模拟器,完成NES游戏开发,可以玩标准的NES游戏,已测试超级玛丽、魂斗罗之类的都可以正常运行。

4万+

25_ChatModel抽象层源码_init_chat_model如何屏蔽厂商差异_SPI机制与工厂模式深度剖析

为什么一行能切换不同厂商response = model.invoke("你好,介绍一下 LangChain")从使用者视角看,这叫“统一模型入口”。v解析 provider 和 model namev根据 provider 找到集成包和 ChatModel 类v动态 import 供应商包v实例化具体 ChatModel,例如 ChatOpenAIv返回 BaseChatModel 统一接口上层代码只依赖。不同供应商通过独立集成包提供具体实现。

专注于人工智能与 Java 后端开发的技术博主,持续分享大模型应用、机器学习实战、Spring 生态相关的知识和经验。坚持输出高质量原创文章,用通俗易懂的方式拆解复杂技术,帮助读者快速上手、少走弯路。欢迎关注交流,一起在AI时代共同成长。 556

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

OpenHuman TinyAgents 迁移计划全解:现状审计、六工作包落盘与 Legacy Provider 栈退役路线

> 本指南以 [docs/tinyagents-migration-plan-2026-07-22.md](https://link.gitcode.com/i/6efcf0c7aab4758aa490158aba57450e) 为核心骨架,结合仓库根 [Cargo.toml](https://link.gitcode.com/i/737b96a3fa59c53dace9b26574ea9fbd)

gitblog_00586的博客 464

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SpringBoot2 的 SolonMCP 里 ChatModel 不走本地 ollama,改走 TaoToken 通道行不行?

SpringBoot2 的 SolonMCP 项目想换掉本地 ollama,只需改 ChatModel 的 apiUrl、provider、model 三处指向 TaoToken,保留 defaultToolsAdd 挂载 getWeather 工具即可。用环境变量注入 Key,运行 McpClientTest 验证天气调用,MCP 协议与 sse 地址完全不动。详见 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

weixin_35751412的博客 7

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SolonMCP 的 ChatModel 不想再走本地 ollama,改到 TaoToken 通道行不行?

SolonMCP的ChatModel写死本地ollama后,getWeather工具调用常失效。用TaoToken时,到https://taotoken.net/?utm_source=taotoken_aicg_blog_end创建Key,选兼容模型,替换构建里的apiUrl、provider、model并补Key;8080的/mcp/sse与服务端不动。

weixin_42583683的博客 6

SolonMCP 的 ChatModel 接 ollama 这段,Base URL 填 TaoToken,SpringBoot2 工具调用怎么跑

SpringBoot2 老项目用 SolonMCP 跑 MCP 工具调用,把 ChatModel 的 Base URL 从本地 ollama 换成 TaoToken 统一接入,只改 apiUrl、provider、model 三处,保留 defaultToolsAdd 与 prompt 调用,即可验证 LLM 自动调 getWeather。官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

Ceshi01的博客 12

LLM API密钥动态轮换实战:Spring Vault + Spring AI + 多Provider路由

LLM API Key 管理不是「加个环境变量」的小事,而是生产级 AI 应用的底座工程。对 Java 团队来说,HashiCorp Vault + Spring Cloud Vault 提供了成熟的动态密钥能力,Spring AI 2.0 提供了多 Provider 统一抽象,Resilience4j 提供了熔断限流,三者组合就能搭出一个可轮换、可审计、可降级的企业级 LLM 网关。Java 程序员做 AI,真的不用转 Python。

qq_36021478的博客 178

LobeHub Model Runtime 测试覆盖率实战指南:从 39% 到 100% 的 Provider 测试方法论

本指南基于 [packages/model-runtime/docs/test-coverage.md](https://link.gitcode.com/i/c8ab60a56e397fd2d519f6bab5e2bc9a) 这一测试覆盖率文档展开,系统梳理 LobeHub 开源仓库中 `model-runtime` 包(负责对接 80+ AI 模型服务商的核心运行时层)如何在数轮迭代中将整体行

gitblog_00214的博客 1190

ChatModel与Provider分层设计:大模型接入与排障实战解析

在大模型应用开发中,模型层与业务层之间的解耦设计是保障系统可维护性和可扩展性的关键。ChatModel作为面向业务的统一接口,屏蔽了不同模型服务的差异;Provider则负责适配各类上游API,将异构协议、认证方式和错误码转化为标准能力。这种分层架构不仅支持OpenAI、DeepSeek等多模型灵活切换,还能有效避免业务代码被模型SDK绑架。实际工程中,配置管理、Provider注册以及异常处理是高频踩坑点,例如config.toml中type值不匹配导致的"provider not found"、reas

weixin_34246529的博客 221

OpenHuman 模型层迁移到 tinyagents:替换自研 Provider 推理栈的迁移方案解读

本篇技术指南以仓库内历史设计文档 [docs/tinyagents-inference-migration-plan.md](https://link.gitcode.com/i/372a6bf0cf6c46eece39410c2203fd04) 为主体,讲解 OpenHuman 如何把约 2.96 万行的自研 `inference/provider/` 模型层迁移到 vendored `tiny

gitblog_01158的博客 392

LangChain 模型接入全攻略

本文包含 ChatModel 抽象与四大核心 API(invoke/stream/batch/astream_events)、多 Provider 统一接入(OpenAI / Anthropic / DeepSeek / 国产模型 / 本地模型)、七大模型参数调优(temperature / top_p / max_tokens 等)、流式输出与 Callback 回调体系(含 FastAPI SSE 落地)、速率限制与智能重试(指数退避 / Fallback 降级)、Token 计量与成本控制

xiaoma的博客 183

CangjieMagic 模型层(magic.core.model)深度解析:Chat / Embedding / Image 模型抽象与接入实战

`magic.core.model` 是 CangjieMagic(仓颉 LLM Agent 框架)的模型抽象层,统一封装了对话(Chat)、向量(Embedding)、文生图(Image)三类模型能力,并通过 `Model`、`ChatModel`、`EmbeddingModel`、`ImageModel` 四个接口及配套的请求/响应类型,向上层 Agent DSL、执行器与 RAG 组件提供一

gitblog_00507的博客 222

Spring AI 2.0 多模型路由网关:Astra/Sol 到国产模型的智能调度与降级

GPT-6 Astra 的发布不是让 Java 后端团队“换模型”,而是让多模型共存成为常态。Spring AI 2.0 通过ChatModelChatClient统一抽象、运行时路由、Advisor链式编排,已经把“模型无关”这件事做通了。真正难的不是接入模型,而是用 Java 的工程化能力把多模型调度做成可观测、可降级、可审计的基础设施。SmartModelGateway 的关键设计可以概括为四句话:按角色抽象模型,而不是按厂商名硬编码;规则 + 成本驱动路由,第一版避免黑盒分类器;

qq_36021478的博客 249

LangChain 快速入门:从 Hello World 到第一个 Chain

核心痛点:2023 年以来,大语言模型(LLM)的能力以令人目眩的速度进化——GPT-4、Claude、Gemini 等旗舰模型在推理、代码生成、多模态理解等维度不断刷新上限。调用一次 API 只需 5 行代码,但构建一个可维护、可扩展的 LLM 应用却要面对成百上千行散落的胶水代码。提示词硬编码在字符串里、模型参数散落在各处、输出解析靠正则表达式硬扛——这些"能跑通"的代码在需求变更时脆弱得像纸牌屋。当 LLM 从"玩具"变成"基础设施",我们用什么工程方法来驾驭它?适配人群。

我的博客 382
上一篇: 第 4 章 · ChatClient:应用层入口
下一篇: 第 6 章 · Spring AI中的Advisors
AI深栈
博客等级 码龄14年 1粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值