欢迎光临
我们一直在努力

【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.h)
    • 2.3 源文件核心实现(GeminiProvider.cpp)
      • 2.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 技术栈零成本切换;长期依赖会形成品牌替代效应,难以构建自身技术护城河。
  • 原生 API(models.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)

#ifndef GEMINI_PROVIDER_H
#define GEMINI_PROVIDER_H

#include "LLMProvider.h"
#include <string>
#include <map>
#include <functional>
#include <vector>

namespace ai_chat_sdk {

// Gemini模型提供者实现类,继承LLMProvider抽象基类
class GeminiProvider : public LLMProvider {
public:
// 初始化模型配置
// modelConfig: 配置项映射,包含api_key、endpoint等核心参数
// 返回值: 初始化成功返回true,失败返回false
virtual bool initModel(const std::map<std::string, std::string>& modelConfig) override;

// 检测模型是否处于可用状态
virtual bool isAvailable() const override;

// 获取模型官方标识名称
virtual std::string getModelName() const override;

// 获取模型功能描述文本
virtual std::string getModelDesc() const override;

// 发送对话消息并获取流式响应
// messages: 对话上下文消息列表
// callback: 增量数据回调函数
// 参数1: 当前增量文本数据
// 参数2: 是否为最后一个数据块(流结束标记)
virtual std::string sendMessageStream(
const std::vector<std::string>& messages,
std::function<void(const std::string&, bool)> callback) override;

protected:
bool _isAvailable = false; // 模型可用状态标记
std::string _apiKey; // Gemini API访问密钥
std::string _endpoint; // API服务基准端点URL
};

} // namespace ai_chat_sdk

#endif // GEMINI_PROVIDER_H

2.3 源文件核心实现(GeminiProvider.cpp)

2.3.1 模型初始化函数

功能:从配置映射中读取核心参数,完成合法性校验与状态初始化。

#include "../include/GeminiProvider.h"
#include "../include/util/myLog.h"

namespace ai_chat_sdk {

bool GeminiProvider::initModel(const std::map<std::string, std::string>& modelConfig) {
// 读取并校验API密钥
auto it = modelConfig.find("api_key");
if (it == modelConfig.end()) {
ERR("GeminiProvider::initModel: api_key not found in modelConfig");
return false;
}
_apiKey = it->second;

// 读取并校验API端点地址
it = modelConfig.find("endpoint");
if (it == modelConfig.end()) {
ERR("GeminiProvider::initModel: endpoint not found in modelConfig");
return false;
}
_endpoint = it->second;

// 标记模型可用并输出初始化日志
_isAvailable = true;
INFO("GeminiProvider::initModel: init model success, endpoint:{}", _endpoint);
return true;
}

**安全规范:**日志输出禁止打印 API 密钥明文,仅输出端点地址,避免密钥泄露风险。

2.3.2 可用性检测

bool GeminiProvider::isAvailable() const {
return _isAvailable;
}

2.3.3 模型元信息获取

std::string GeminiProvider::getModelName() const {
return "gemini-2.0-flash";
}

std::string GeminiProvider::getModelDesc() const {
return "Google的急速响应模型,专为大模型部署和快速交互的场景设计";
}


3 ~> OpenAI 兼容 API 协议规范

3.1 接口端点

  • 请求方法:POST
  • 基准 URL:https://generativelanguage.googleapis.com
  • 接口路径:/v1beta/openai/chat/completions
  • 完整请求地址:https://generativelanguage.googleapis.com/v1beta/openai/chat/completions

3.2 请求头规范

参数名类型取值规范
Content-Type string 固定值 application/json
Authorization string 格式为 Bearer {GEMINI_API_KEY}

3.3 请求体核心参数

参数名类型说明
model string 模型标识,如 gemini-2.0-flash
messages array 对话消息列表,每条包含role与content字段
temperature float 采样温度,控制输出随机性,典型值 0.7
max_tokens integer 最大生成 Token 数限制
stream boolean 是否开启流式响应,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表示正常结束
    • usage:Token 消耗统计,包含提示 Token、补全 Token 与总 Token

4 ~> 工程接入与测试实践

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 环境管理

  • 全局前置 URL:https://generativelanguage.googleapis.com
  • 环境变量体系:
    • GEMINI_API_KEY:密钥类变量,加密存储
    • 支持多环境隔离:开发环境、测试环境、正式环境、本地 Mock

4.2.2 接口测试流程

  • 新建 POST 请求,填写完整接口路径
  • Headers 中配置Content-Type与Authorization
  • Body 选择 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

    🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡

    ૮₍ ˶ ˊ ᴥ ˋ˶₎ა

    在这里插入图片描述

    赞(0)
    未经允许不得转载:171主机测评 » 【AI大模型接入SDK】Gemini模型接入知识体系
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址