You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@google/genai SDK中chat.sendMessage配置是否会覆盖ai.chats.create配置?Vue.js场景下的技术问询

Google GenAI SDK: sendMessage config覆盖chats.create基础配置的问题

是的,这种完全覆盖配置的行为确实是@google/genai SDK的预期设计。

当你在chats.create()中设置初始config后,后续调用sendMessage()时传入的config参数会直接替换掉初始配置,而不是进行合并。SDK的设计逻辑是让sendMessage()的config提供单次请求的完整自定义能力,而非增量修改。

正确的解决方式:手动合并基础配置与单次请求配置

你提到的手动扩展基础配置到每个sendMessage调用,确实是目前最稳妥的实现方式。具体可以这样优化你的代码:

首先把基础配置抽成独立变量,方便复用:

const baseConfig = {
  systemInstruction: "You are an expert about tennis. Don't reply to other kinds of requests, but apologize and state that you're a tennis assistant only",
};

然后创建对话时使用这个基础配置:

const chat = ai.chats.create({
  model: "gemini-3-flash-preview",
  config: baseConfig
});

最后在sendMessage时合并基础配置和单次请求的abortSignal:

const response = await chat.sendMessage({
  message: inputText.value,
  config: { ...baseConfig, abortSignal: abortController.signal }
});

这样既保留了持久化的systemInstruction,又能为每个请求单独设置abortSignal实现取消功能。

补充说明

SDK选择完全替换而非合并配置,主要是为了避免配置合并时的歧义问题(比如当两次配置包含相同键名时,优先级难以界定)。这种设计让开发者能够明确控制每一次请求的完整配置,减少意外行为的发生。

内容的提问来源于stack exchange,提问作者Curio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 06:37:39