google-gemini-php/client

⚡️ Gemini PHP is a community-maintained PHP API client that allows you to interact with the Gemini AI API.

概览

google‑gemini‑php/client 是一个由社区维护的 PHP 库,封装了 Google 的 Gemini 生成式 AI API。它让 PHP 开发者能够调用 Gemini 模型进行文本补全、多模态(文本 + 图片/视频)查询、图片生成、流式响应、结构化 JSON 输出、函数调用、代码执行,以及各种“接地”(grounding)功能,例如实时 Google 搜索、地图和文件搜索。此包通过 Composer 发布,并要求 PHP 8.2+。

主要功能

功能 说明
模型访问 通过 $client->generativeModel() 调用任何 Gemini 模型(例如 gemini-2.0-flash、gemini-2.5-flash-image)
多模态输入 在单个请求中同时发送文本与图片 (Blob) 或视频 (UploadedFile)
图片生成 使用 Imagen 模型根据提示词创建图片,并可设置长宽比
聊天与流式传输 建立多轮对话;可选择以流式方式接收部分结果
结构化输出 要求 JSON(或其他 MIME 类型)并定义响应结构,让模型返回机器可读的数据
函数调用 声明模型可调用的函数,接收 FunctionCall 对象,执行函数并将结果回传给模型
代码执行 启用模型生成并执行代码,返回执行结果
接地工具 附加 Google 搜索、Google 地图或私有文件搜索存储库,让模型能引用最新或私有信息
系统指令 设置系统层级的提示词,影响模型的语气、风格或行为
文件管理与缓存内容 上传、列出、删除文件;创建缓存内容对象以加速重复查询
配置 自定义基础 URL、HTTP 标头、查询参数、HTTP 客户端和流处理器

典型使用流程

  1. 安装 (通过 Composer):
    composer require google-gemini-php/client
    
  2. 提供 API 密钥 (来自 Google AI Studio)。
  3. 创建客户端 – 使用快速的 Gemini::client($key) 辅助函数或完整配置的工厂。
  4. 选择模型 – 使用 $client->generativeModel('gemini-2.0-flash')。
  5. 调用方法 – 例如 generateContent()、streamGenerateContent() 或使用 startChat() 开始聊天。
  6. 处理响应 – 调用 $result->text()、$result->json(),或检查部分内容以获取函数调用、代码执行结果等。

示例代码 (带有系统提示词的聊天)

use Gemini; // 包提供的 façade

$client = Gemini::client(getenv('GEMINI_API_KEY'));

$response = $client
    ->generativeModel('gemini-2.0-flash')
    ->withSystemInstruction(
        Gemini\Data\Content::parse(
            'You are a helpful assistant that always responds in the style of a pirate.'
        )
    )
    ->generateContent('Tell me about PHP programming');

echo $response->text(); // Ahoy there, matey! …

适用对象

  • PHP 开发者:希望将生成式 AI 功能加入 Web 应用、CLI 工具或后端服务。
  • 需要 多模态 (文本 + 图片/视频) 或 实时 (流式) 交互的团队。
  • 需要 结构化数据 (JSON) 或 工具使用 (函数调用、代码执行、实时搜索) 的项目。

限制与注意事项

  • 本库仅支持 Gemini v1beta API (截至 2.0 版本)。旧版 Gemini 不兼容。
  • 您必须提供自己的 Google API 密钥 并处理相关费用。
  • 部分高级功能 (例如函数调用签名、代码执行) 取决于特定的 Gemini 模型版本;请查阅官方 Gemini 文档以确认模型兼容性。
  • 本包遵循 PSR‑18 HTTP 客户端标准;您需要一个兼容的 HTTP 客户端 (建议使用 Guzzle)。

以上所有信息均直接取自仓库的 README;未推论任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目