@flink-app/ gemini- 适应器
Google 双子座适配器 Flink AI框架,基于 @google/genai SDK(双子座开发者 API). SDK是一个正常的依赖, 不需要其他安装.
安装
npm install @flink-app/gemini-adapter
使用量
import { GeminiAdapter } from "@flink-app/gemini-adapter";
import { FlinkApp } from "@flink-app/flink";
const app = new FlinkApp({
ai: {
llms: {
default: new GeminiAdapter({
apiKey: process.env.GOOGLE_AI_API_KEY!,
model: "gemini-2.0-flash",
}),
},
},
});
配置
| 选项 | 类型 | 需求 | 说明 |
|---|---|---|---|
| 键 | string | 对 | 谷歌 AI API 密钥 |
| 模式 | string | 对 | 双子座模型名(如. "gemini-2.0-flash", (中文(简体) ), "gemini-1.5-pro"(中文(简体) ) |
| 思维组合 | GeminiThinkingConfig | 没有 | 传经如来 config.thinkingConfig (单位:千美元)includeThoughts, (中文(简体) ), thinkingBudget, (中文(简体) ), thinkingLevel,任何未来领域) |
| 调试 | boolean | 没有 | 启用调试记录( 默认 ): false(中文(简体) ) |
支持的模式
gemini-2.0-flash- 快速、有成本效益(建议默认)gemini-1.5-pro- 能力高,背景长gemini-1.5-flash- 快速、平衡的能力gemini-2.5-pro-preview-03-25- 最新预览模式
思考
思维模型(Gemini 2.5 / 3 系列)配置 thinkingConfig,通过逐字记录 config.thinkingConfig数字 :
const adapter = new GeminiAdapter({
apiKey: process.env.GOOGLE_AI_API_KEY!,
model: "gemini-2.5-pro",
thinkingConfig: { includeThoughts: true, thinkingBudget: 2048 }, // optional
});
- 与
includeThoughts: true,思考摘要作为reasoning块并被物剂浮出水面reasoning_delta活动fullStream。它们从未出现在textStream或者说result.message。摘要不发回双子座. - 思想签名 文本返回,函数调用部分被捕获(
providerData.gemini.signatures),并在后回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回 双子座 3 拒绝工具调用续作, 当第一个函数调用的签名缺失时为 400 , 所以不管发生thinkingConfig。 。 。 . - 思考符号
thoughtsTokenCount)列入报告outputTokens。 。 。 .
结构化输出和工具选择
经纪人的 model.structuredOutput 以 config.responseMimeType: "application/json" 加号 responseSchema双子座取了JSON Schema的OpenAPI风格子集,所以 $schema, (中文(简体) ), $ref, (中文(简体) ), $defs, (中文(简体) ), additionalProperties 财务报告和审定财务报表 default 被剥去(同样的消毒工具计划)。 解析后的答复如下: result.structured。 。 。 .
双子座不接受反应计划与函数声明. 在携带工具的步骤上,通过系统指令请求 schema 代替,而 Flink 验证答案;一旦一个步骤没有工具,即使用 原生反应 schema .
model.toolChoice 以 toolConfig.functionCallingConfig数字 : "auto" → AUTO, (中文(简体) ), "none" → NONE, (中文(简体) ), "required" → ANY, (中文(简体) ), { type: "tool", name } → ANY 与 allowedFunctionNames: [name]。只有当请求带有工具时才发出.
图像模型
GeminiImageModel 执行 Flink 的 ImageModel 具有图像能力的双子座模型的接口(gemini-3.1-flash-image, (中文(简体) ), gemini-3-pro-image, (中文(简体) ), gemini-3.1-flash-lite-image)通过 generateContent 带有图像响应模式.
import { GeminiImageModel } from "@flink-app/gemini-adapter";
const app = new FlinkApp<AppCtx>({
ai: {
images: {
default: new GeminiImageModel({ apiKey: process.env.GEMINI_API_KEY!, model: "gemini-3.1-flash-image", imageSize: "2K" }),
},
},
});
const { images } = await ctx.ai.images.default.edit({
prompt: "Make it night time, keep the car unchanged",
images: [imageFromBuffer(file, "image/png")],
});
- 编辑是即时驱动的:双子座不带口罩(
capabilities.mask假的, 面具失败unsupported(中文(简体) ) size减为带警告的宽度比;n上面有一个由平行请求提供- 文本与图像一起返回
providerMetadata.gemini.text· ;providerOptions.gemini合并到请求中config - 见 图像模型指南
特征
- QQ 工具调用支持
- * 思考(
thinkingConfig(通过)reasoning_delta,在转弯时重放签名 - * 流式反应(SSE/NDJSON)
- QQ 转向执行( 连续的相同作用信息合并)
- 系统指令处理
- JSON Schema 为双子座兼容性进行消毒
- QQ 调用跟踪
- 调试日志
使用 FlinkAgent
import { FlinkAgent } from "@flink-app/flink";
import { GeminiAdapter } from "@flink-app/gemini-adapter";
export default class CarAgent extends FlinkAgent<AppContext> {
instructions = "You are a helpful car assistant.";
llm = new GeminiAdapter({
apiKey: process.env.GOOGLE_AI_API_KEY!,
model: "gemini-2.0-flash",
});
}
许可证
麻省理工学院