
Genkit Go 模型提供方接入全指南Google AI、Vertex AI、Anthropic、OpenAI 兼容与 Ollama 实战【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skillsGenkit Go 是面向 Go 语言的 AI 开发 SDK通过统一的ai接口屏蔽不同模型提供方的差异。本文以skills/cloud/genkit-go/references/providers.md为核心系统讲解在 Genkit Go 中接入 Google AIGemini、Vertex AI、AnthropicClaude、任意 OpenAI 兼容 APIOpenAI、DeepSeek、xAI 等以及本地 Ollama 模型的完整流程包括插件注册、环境变量配置、模型引用方式、提供方专属参数下发以及多提供方共存的单实例注册模式。读完本文你将能够在同一个 Go 应用中灵活切换、混用多个模型提供方并为生产环境的故障转移Fallback与重试打下基础。一、前置知识Genkit Go 的插件与初始化模型在深入各提供方之前需要先理解 Genkit Go 的插件 genkit.Init架构。所有模型提供方都是以插件形式存在的它们在github.com/genkit-ai/genkit/go模块下的plugins/子包中发布无需单独拉取模块直接 import 后执行go mod tidy即可。可用插件包括见 getting-started.mdplugins/googlegenaiGoogle AI 与 Vertex AIplugins/anthropicAnthropic Claudeplugins/compat_oaiOpenAI 兼容 APIOpenAI、Groq、xAI 等plugins/ollama本地 Ollama 模型plugins/middleware内置中间件包Retry、Fallback、ToolApproval、Filesystem、Skills每个应用都从genkit.Init开始它返回一个*Genkit实例g作为全局资源注册中心ctx : context.Background() g : genkit.Init(ctx, genkit.WithPlugins(googlegenai.GoogleAI{}))genkit.Init支持若干初始化选项详见 getting-started.mdgenkit.WithPlugins(...)注册一个或多个插件genkit.WithDefaultModel(googleai/gemini-flash-latest)设置默认模型当调用未显式指定模型时使用genkit.WithPromptDir(my-prompts)设置.prompt文件目录默认promptsgenkit.WithPromptFS(promptsFS)通过go:embed将.prompt文件嵌入二进制需要特别强调的是g必须显式传递到所有 Genkit 函数中genkit.GenerateText(ctx, g, ...)而不是存成全局变量这是整个 SDK 的核心模式。下面各提供方的接入都建立在这个统一骨架之上。二、Google AIGemini云端 Gemini 的直连接入Google AIai.google.dev是接入 Gemini 系列模型最直接的方式适合快速开发和原型验证。2.1 插件注册与凭据import github.com/genkit-ai/genkit/go/plugins/googlegenai g : genkit.Init(ctx, genkit.WithPlugins(googlegenai.GoogleAI{}))环境变量GEMINI_API_KEY或GOOGLE_API_KEY。Genkit 在初始化插件时读取环境变量获取 API Key无需在代码中硬编码凭据。2.2 模型命名规则模型名遵循googleai/model-id格式其中model-id与 Google AI 官方模型 ID 一致如gemini-flash-latest、gemini-pro-latest。由于模型 ID 更新频繁官方建议查阅 ai.google.dev 的最新模型列表而非硬编码旧 ID。2.3 三种引用模型的方式// 方式一按名称字符串引用最简单适用于大多数场景 ai.WithModelName(googleai/gemini-flash-latest) // 方式二ModelRef 携带提供方专属配置 // 这里通过 ThinkingConfig 将 thinking budget 设为 0即关闭 Gemini 2.x 系列的思考模式 ai.WithModel(googlegenai.ModelRef(googleai/gemini-flash-latest, genai.GenerateContentConfig{ ThinkingConfig: genai.ThinkingConfig{ ThinkingBudget: genai.Ptrint32, // disable thinking }, })) // 方式三直接查找模型实例 // 从已初始化的 *Genkit 实例中取回模型可复用于多次调用 m : googlegenai.GoogleAIModel(g, gemini-flash-latest)三种方式对应三种使用场景WithModelName用于快速指定ModelRef用于需要在模型引用上固化提供方参数如关闭思考模式、设定输出配置的场景GoogleAIModel用于需要把模型当作一等对象传递、复用的场景。三者可以配合genkit.GenerateText/genkit.Generate/genkit.GenerateData使用相关 API 见 generation.md。三、Vertex AI面向 Google Cloud 生产环境的 Gemini 接入Vertex AI 是 Google Cloud 的托管 AI 平台适合已有 GCP 项目、需要 IAM 权限治理与生产级 SLA 的场景。它与 Google AI 使用相同的模型 ID但凭据体系完全不同。3.1 插件注册与环境变量import github.com/genkit-ai/genkit/go/plugins/googlegenai g : genkit.Init(ctx, genkit.WithPlugins(googlegenai.VertexAI{}))环境变量GOOGLE_CLOUD_PROJECTGCP 项目 ID、GOOGLE_CLOUD_LOCATION或GOOGLE_CLOUD_REGION区域二者取一即可如us-central1。凭据Vertex AI 使用 Application Default CredentialsADC完成身份认证典型流程是先在本地执行gcloud auth application-default login之后 SDK 会自动读取 ADC 凭据无需在代码或环境变量中管理 API Key这与 Google AI 的 API Key 方式形成鲜明对比也意味着代码在本地与 GCP 运行时如 Cloud Run、GKE之间可以无缝迁移。3.2 模型引用模型名遵循vertexai/model-id格式模型 ID 与 Google AI 一致ai.WithModelName(vertexai/gemini-flash-latest)从源码结构看plugins/googlegenai同时承载GoogleAI{}与VertexAI{}两个插件结构二者共用底层genaiGoogle Generative AI SDK类型体系因此ModelRef携带的genai.GenerateContentConfig配置对 Vertex AI 同样适用。四、AnthropicClaude接入 Anthropic 官方 SDK 类型Genkit Go 的 Anthropic 插件直接基于anthropics/anthropic-sdk-go构建因此提供方专属配置可以直接使用 Anthropic SDK 的强类型参数无需做 map 转换。4.1 插件注册与环境变量import ( github.com/anthropics/anthropic-sdk-go // Anthropic SDK types ant github.com/genkit-ai/genkit/go/plugins/anthropic // Genkit plugin ) g : genkit.Init(ctx, genkit.WithPlugins(ant.Anthropic{}))环境变量ANTHROPIC_API_KEY。模型名遵循anthropic/model-id格式如anthropic/claude-sonnet-4-6。最新模型 ID 需查阅 Anthropic 官方模型文档。4.2 模型引用与提供方配置// 按名称引用 ai.WithModelName(anthropic/claude-sonnet-4-6) // 携带 Anthropic SDK 类型的提供方配置通过 ai.WithConfig 下发 ai.WithConfig(anthropic.MessageNewParams{ Temperature: anthropic.Float(1.0), MaxTokens: *anthropic.IntPtr(2000), Thinking: anthropic.ThinkingConfigParamUnion{ OfEnabled: anthropic.ThinkingConfigEnabledParam{ BudgetTokens: *anthropic.IntPtr(1024), }, }, })这里体现了 Genkit 与 Google AI 插件的一个差异googlegenai使用ModelRef的第二个参数携带配置而anthropic通过ai.WithConfig传入 SDK 原生类型。Thinking配置开启了 Claude 的扩展思考Extended Thinking模式并分配 1024 token 的思考预算适用于复杂推理任务Temperature与MaxTokens则分别控制采样随机性与最大输出长度。关于ai.WithConfig更通用的用法如ai.WithConfig(map[string]any{temperature: 0.7})可参考 generation.md 的 Common Options 一节。五、OpenAI 兼容接入compat_oai一套代码对接任意兼容 APIcompat_oai插件可以对接任何 OpenAI 兼容的 Chat Completions API包括 OpenAI 官方、DeepSeek、xAIGrok、Groq 等是异构模型提供方统一接入的关键工具。5.1 插件配置与注册import github.com/genkit-ai/genkit/go/plugins/compat_oai openaiPlugin : compat_oai.OpenAICompatible{ Provider: openai, // 唯一标识符用于区分多个兼容提供方 APIKey: os.Getenv(OPENAI_API_KEY), // BaseURL: https://custom-endpoint/v1, // 非 OpenAI 官方提供方需指定自定义端点 } g : genkit.Init(ctx, genkit.WithPlugins(openaiPlugin))关键配置项说明Provider该提供方的唯一标识符会参与模型名的构成必须在同一应用中保持唯一APIKeyAPI 密钥通常从环境变量读取BaseURL自定义 API 端点。对接 OpenAI 官方时可不填默认官方端点对接 DeepSeek、xAI 等第三方时必须指定其各自的/v1兼容端点例如https://api.deepseek.com/v1。5.2 显式定义模型与 Google AI / Anthropic 插件不同compat_oai不会自动发现模型需要显式调用DefineModel定义并将定义结果作为模型对象使用model : openaiPlugin.DefineModel(openai, gpt-4o, compat_oai.ModelOptions{}) // 在生成调用中使用 ai.WithModel(model)DefineModel的三个参数分别是 Provider 标识符、模型 ID 与ModelOptions。这意味着如果你同时对接 OpenAI 与 DeepSeek需要分别创建两个OpenAICompatible插件实例不同Provider标识符并为每个实例定义自己的模型列表。六、Ollama本地模型接入Ollama 插件用于接入本地运行的模型适合离线环境、数据隐私敏感场景或成本控制需求。它同样采用显式定义模型的模式。6.1 插件配置与注册import github.com/genkit-ai/genkit/go/plugins/ollama ollamaPlugin : ollama.Ollama{ ServerAddress: http://localhost:11434, Timeout: 60, // seconds } g : genkit.Init(ctx, genkit.WithPlugins(ollamaPlugin))配置项说明ServerAddressOllama 服务地址默认本机http://localhost:11434若 Ollama 运行在远程主机或容器中需相应修改Timeout请求超时时间单位为秒。本地大模型推理耗时较长需要合理设置避免过早超时。6.2 定义本地模型model : ollamaPlugin.DefineModel(g, ollama.ModelDefinition{ Name: llama3.1, Type: chat, // 或 generate }, nil, // 可选 *ModelOptions ) // 在生成调用中使用 ai.WithModel(model)ModelDefinition的Name对应你在 Ollama 中ollama pull拉取的模型标签如llama3.1、qwen2.5Type指定模型交互类型chat适用于对话模型generate适用于纯补全模型第三个参数为可选的*ModelOptions不使用时传nil。七、多提供方共存单实例多模型混用Genkit Go 允许在同一个*Genkit实例中注册多个模型提供方并在每次生成调用时按需选择模型这是构建多云、多模型策略的基础能力。7.1 注册多个插件并设置默认模型g : genkit.Init(ctx, genkit.WithPlugins( googlegenai.GoogleAI{}, ant.Anthropic{}, ), genkit.WithDefaultModel(googleai/gemini-flash-latest), )WithDefaultModel指定的默认模型会在所有未显式指定模型的调用中生效保证开箱即用。7.2 每次调用选择不同模型// 使用 Gemini text1, _ : genkit.GenerateText(ctx, g, ai.WithModelName(googleai/gemini-flash-latest), ai.WithPrompt(Hello from Gemini), ) // 使用 Claude text2, _ : genkit.GenerateText(ctx, g, ai.WithModelName(anthropic/claude-sonnet-4-6), ai.WithPrompt(Hello from Claude), )由于每次调用的模型都是通过ai.WithModelName独立指定的你可以在一个应用中实现诸如摘要用 Gemini、代码生成用 Claude、路由决策用本地 Ollama这样的混合策略。7.3 与中间件联动跨提供方 Fallback多提供方注册的另一个典型价值是与内置中间件配合实现故障转移。plugins/middleware包中的Fallback中间件可以在主模型不可用时自动切换到备选模型而Retry中间件则负责带退避的重试详见 middleware.mdai.WithUse(middleware.Fallback{ Models: []ai.ModelRef{ googlegenai.ModelRef(googleai/gemini-flash-latest, nil), googlegenai.ModelRef(vertexai/gemini-flash-latest, nil), }, })需要注意的是Fallback中每个备选模型使用各自ModelRef携带的配置不会继承原始请求的配置且可以通过调整Retry与Fallback的嵌套顺序Retry { Fallback { ... } }或反之控制先重试整个级联还是先重试主模型再切换。这为多云高可用提供了现成的组合范式。八、提供方选型速查与最佳实践8.1 选型速查表提供方插件包环境变量 / 凭据模型名前缀模型定义方式Google AI (Gemini)plugins/googlegenaiGEMINI_API_KEY/GOOGLE_API_KEYgoogleai/自动发现WithModelName/ModelRef/GoogleAIModelVertex AIplugins/googlegenaiGOOGLE_CLOUD_PROJECT、GOOGLE_CLOUD_LOCATION(或REGION)、ADCvertexai/自动发现WithModelName/ModelRefAnthropic (Claude)plugins/anthropicANTHROPIC_API_KEYanthropic/自动发现WithModelName/ai.WithConfigOpenAI 兼容plugins/compat_oaiAPIKey配置项、自定义BaseURL自定义显式DefineModelOllamaplugins/ollama无本地服务需ServerAddress自定义显式DefineModel8.2 实践建议凭据统一走环境变量或 ADCGoogle AI / Anthropic 读取环境变量Vertex AI 走 ADC避免在代码库中提交密钥。生产部署建议结合密钥管理服务注入环境变量。模型 ID 不要硬编码模型 ID 更新频繁建议查各提供方官方文档获取最新 ID或用-latest后缀如gemini-flash-latest跟随更新。优先用g显式传参始终把genkit.Init返回的*Genkit实例显式传入所有函数避免全局变量带来的初始化时序问题。多提供方配合 Fallback 使用将googleai/与vertexai/等配对配置为Fallback模型列表实现同模型跨平台高可用。结合 CLI 验证使用genkit start -- go run .启动应用即可在 Developer UI默认http://localhost:4000中运行 flow、打开模型 Playground 并查看每次调用的模型输入输出与 token 用量是排查提供方配置问题的最快路径详见 getting-started.md 与 SKILL.md。九、小结本文基于skills/cloud/genkit-go/references/providers.md梳理了 Genkit Go 接入全部主流模型提供方的完整路径Google AI 与 Vertex AI 共享plugins/googlegenai包与genai配置体系、Anthropic 插件直接消费官方 SDK 强类型、compat_oai以显式DefineModel方式打通任意 OpenAI 兼容端点、Ollama 提供本地推理能力。多提供方可在单个genkit.Init中并存配合WithDefaultModel与Fallback/Retry中间件即可构建健壮的多模型应用。相关生成 API、中间件与 HTTP 部署细节可继续阅读同目录下的 generation.md、middleware.md 与 flows-and-http.md。【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考