免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

【AI大模型接入SDK】Gemini模型接入知识体系

【AI大模型接入SDK】Gemini模型接入知识体系 个人主页艾莉丝努力练剑❄专栏传送门《C语言》《数据结构与算法》《C/C干货分享学习过程记录》《Linux操作系统编程详解》《笔试/面试常见算法从基础到进阶》《Python干货分享》⭐️为天地立心为生民立命为往圣继绝学为万世开太平 艾莉丝的简介文章目录1 ~ Gemini API 体系概述1.1 两套 API 设计机制与选型1.1.1 设计背景1.1.2 接入选型策略1.2 Gemini Flash 模型核心特性2 ~ Gemini Provider 类架构设计2.1 类继承体系2.2 头文件定义GeminiProvider.h2.3 源文件核心实现GeminiProvider.cpp2.3.1 模型初始化函数2.3.2 可用性检测2.3.3 模型元信息获取3 ~ OpenAI 兼容 API 协议规范3.1 接口端点3.2 请求头规范3.3 请求体核心参数3.4 全量响应数据结构4 ~ 工程接入与测试实践4.1 项目目录结构4.2 Apifox 接口测试配置4.2.1 环境管理4.2.2 接口测试流程4.3 网络与代理配置结尾1 ~ Gemini API 体系概述1.1 两套 API 设计机制与选型1.1.1 设计背景OpenAI 兼容 API厂商降低开发者迁移成本的获客手段实现现有 OpenAI 技术栈零成本切换长期依赖会形成品牌替代效应难以构建自身技术护城河。原生 APImodels.generateContent充分释放 Gemini 多模态、函数调用、代码执行等原生能力适配垂直场景深度定制是厂商实现技术自主、构建生态护城河的核心方案。行业演进规律大模型厂商普遍遵循「追随者→挑战者→引领者」的 API 演进路径兼容期快速获客成熟期推出原生标准。1.1.2 接入选型策略快速迁移 / 兼容现有 OpenAI 代码采用 OpenAI 兼容 API仅需修改密钥、Base URL、模型名三处核心配置。深度使用 Gemini 原生能力采用 Google 原生 API发挥多模态、长上下文、工具调用等特性。本工程接入方案优先采用 OpenAI 兼容 API 完成基础对话能力接入预留原生 API 扩展空间。1.2 Gemini Flash 模型核心特性模型标识gemini-2.0-flash核心定位低延迟、高吞吐的急速响应大语言模型适用场景实时对话交互、快速内容生成等对响应时效要求高的场景能力矩阵文本生成、多模态理解、嵌入表示、长上下文、代码执行、JSON 模式、函数调用、系统指令2 ~ Gemini Provider 类架构设计2.1 类继承体系抽象基类LLMProvider定义大模型提供者统一接口规范实现多态调用具体实现类GeminiProvider封装 Gemini API 的请求构造、响应解析、流式处理逻辑统一接口契约模型初始化initModel可用性检测isAvailable模型元信息获取getModelName/getModelDesc流式消息接口sendMessageStream支持增量数据回调2.2 头文件定义GeminiProvider.h#ifndefGEMINI_PROVIDER_H#defineGEMINI_PROVIDER_H#includeLLMProvider.h#includestring#includemap#includefunctional#includevectornamespaceai_chat_sdk{// Gemini模型提供者实现类继承LLMProvider抽象基类classGeminiProvider:publicLLMProvider{public:// 初始化模型配置// modelConfig: 配置项映射包含api_key、endpoint等核心参数// 返回值: 初始化成功返回true失败返回falsevirtualboolinitModel(conststd::mapstd::string,std::stringmodelConfig)override;// 检测模型是否处于可用状态virtualboolisAvailable()constoverride;// 获取模型官方标识名称virtualstd::stringgetModelName()constoverride;// 获取模型功能描述文本virtualstd::stringgetModelDesc()constoverride;// 发送对话消息并获取流式响应// messages: 对话上下文消息列表// callback: 增量数据回调函数// 参数1: 当前增量文本数据// 参数2: 是否为最后一个数据块流结束标记virtualstd::stringsendMessageStream(conststd::vectorstd::stringmessages,std::functionvoid(conststd::string,bool)callback)override;protected:bool_isAvailablefalse;// 模型可用状态标记std::string _apiKey;// Gemini API访问密钥std::string _endpoint;// API服务基准端点URL};}// namespace ai_chat_sdk#endif// GEMINI_PROVIDER_H2.3 源文件核心实现GeminiProvider.cpp2.3.1 模型初始化函数功能从配置映射中读取核心参数完成合法性校验与状态初始化。#include../include/GeminiProvider.h#include../include/util/myLog.hnamespaceai_chat_sdk{boolGeminiProvider::initModel(conststd::mapstd::string,std::stringmodelConfig){// 读取并校验API密钥autoitmodelConfig.find(api_key);if(itmodelConfig.end()){ERR(GeminiProvider::initModel: api_key not found in modelConfig);returnfalse;}_apiKeyit-second;// 读取并校验API端点地址itmodelConfig.find(endpoint);if(itmodelConfig.end()){ERR(GeminiProvider::initModel: endpoint not found in modelConfig);returnfalse;}_endpointit-second;// 标记模型可用并输出初始化日志_isAvailabletrue;INFO(GeminiProvider::initModel: init model success, endpoint:{},_endpoint);returntrue;}**安全规范**日志输出禁止打印 API 密钥明文仅输出端点地址避免密钥泄露风险。2.3.2 可用性检测boolGeminiProvider::isAvailable()const{return_isAvailable;}2.3.3 模型元信息获取std::stringGeminiProvider::getModelName()const{returngemini-2.0-flash;}std::stringGeminiProvider::getModelDesc()const{returnGoogle的急速响应模型专为大模型部署和快速交互的场景设计;}3 ~ OpenAI 兼容 API 协议规范3.1 接口端点请求方法POST基准 URLhttps://generativelanguage.googleapis.com接口路径/v1beta/openai/chat/completions完整请求地址https://generativelanguage.googleapis.com/v1beta/openai/chat/completions3.2 请求头规范参数名类型取值规范Content-Typestring固定值application/jsonAuthorizationstring格式为Bearer {GEMINI_API_KEY}3.3 请求体核心参数参数名类型说明modelstring模型标识如gemini-2.0-flashmessagesarray对话消息列表每条包含role与content字段temperaturefloat采样温度控制输出随机性典型值 0.7max_tokensinteger最大生成 Token 数限制streamboolean是否开启流式响应true 为增量返回false 为全量返回请求体示例{model:gemini-2.0-flash,messages:[{role:user,content:你是谁?}],temperature:0.7,max_tokens:2048,stream:false}3.4 全量响应数据结构{choices:[{finish_reason:stop,index:0,message:{content:我是一个大型语言模型由Google训练,role:assistant}}],created:1759981735,id:pzDnaOXSPjz7IP_tG-6Ao,model:gemini-2.0-flash,object:chat.completion,usage:{completion_tokens:12,prompt_tokens:3,total_tokens:15}}关键字段说明finish_reason生成终止原因stop表示正常结束usageToken 消耗统计包含提示 Token、补全 Token 与总 Token4 ~ 工程接入与测试实践4.1 项目目录结构sdk/ ├── include/ │ ├── common.h# 公共头文件│ ├── LLMProvider.h# 大模型提供者抽象基类│ ├── ChatGPTProvider.h# ChatGPT提供者│ ├── DeepSeekProvider.h# DeepSeek提供者│ ├── GeminiProvider.h# Gemini提供者头文件│ └── util/ │ └── myLog.h# 日志工具头文件├── src/ │ ├── ChatGPTProvider.cpp │ ├── DeepSeekProvider.cpp │ ├── GeminiProvider.cpp# Gemini提供者实现│ └── util/ │ └── myLog.cpp# 日志工具实现└── test/ ├── build/# 构建输出目录├── CMakeLists.txt# 构建配置└── testLLM.cpp# 测试入口程序4.2 Apifox 接口测试配置4.2.1 环境管理全局前置 URLhttps://generativelanguage.googleapis.com环境变量体系GEMINI_API_KEY密钥类变量加密存储支持多环境隔离开发环境、测试环境、正式环境、本地 Mock4.2.2 接口测试流程新建 POST 请求填写完整接口路径Headers 中配置Content-Type与AuthorizationBody 选择 JSON 格式填入请求体参数配置网络代理确保 Google API 可达发送请求校验响应状态码与数据结构4.3 网络与代理配置前置条件Gemini API 服务需通过代理网络方可访问代理配置规则接口请求代理仅作用于 API 请求不影响 Apifox 平台连接自定义代理配置代理 IP 与端口示例127.0.0.1:7890代理绕过列表配置无需代理的地址以英文逗号分隔结尾uu们本文的内容到这里就全部结束了艾莉丝在这里再次感谢您的阅读艾莉丝努力练剑C/C Linux 底层探索者 | 一个正在努力练剑的技术博主【关注】跟随我一起深耕技术领域见证每一次成长。❤️【点赞】让优质内容被更多人看见让知识传递更有力量。⭐【收藏】把核心知识点存好在需要时随时查、随时用。【评论】分享你的经验或疑问评论区一起交流避坑不要忘记给博主“一键四连”哦“今日练剑达成”“技术之路难免有困惑但同行的人会让前进更有方向。”结语希望对学习Linux相关内容的uu有所帮助不要忘记给博主“一键四连”哦往期回顾【AI大模型接入SDK】ChatGPT API博主在这里放了一只小狗大家看完了摸摸小狗放松一下吧૮₍ ˶ ˊ ᴥ ˋ˶₎ა
返回列表