NAV
shell python

APIGPT.Cloud - GeminiAI 开发文档

01 创建APP集成

登录 APIGPT企业版,在AI集成页面,点击创建AI集成,AI供应商选择GeminiAI

02 API请求

认证

GeminiAI API 使用 API 密钥进行身份验证。请访问你的 App 页面,以获取你在请求中使用的 API 密钥。

请记住,你的 API 密钥是一个秘密!不要与他人分享它,也不要在任何客户端代码(浏览器、应用程序)中公开它。生产请求必须通过你自己的后端服务器路由,你的 API 密钥可以从环境变量或密钥管理服务中安全加载。

所有 API 请求都应该在 Authorization HTTP 头中包含你的 API 密钥,如下所示:

Authorization: Bearer <替换成从APIGPT.CLOUD创建的APP Key>

发送请求

gemini-pro 请求示范

curl https://ai.pgpt.cloud/gemini/v1/chat/completion \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <API_KEY>" \
-d '{
    "model": "gemini-pro",
    "contents": [
        {
            "role": "user",
            "parts": [
                {
                    "text": "太阳系"
                },
            ]
        }
    ],
    "stream": false
}
'
import requests

HOST = 'https://ai.pgpt.cloud/'
API_KEY = '<YOUR_API_KEY>'

url = f'{HOST}/gemini/v1/chat/completions'
headers = {
    'accept': 'application/json',
    "Authorization": f"Bearer {KEY}"
}
payload = {
    "model": "gemini-pro",
    "contents": [
        {
            "role": "user",
            "parts": [
                {
                    "text": "太阳系"
                },
            ]
        }
    ],
    "stream": False
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())

gemini-pro-vision 请求示范

echo '{
  "contents":[
    {
      "parts":[
        {"text": "What is this picture?"},
        {
          "inline_data": {
            "mime_type":"image/jpeg",
            "data": "'$(base64 -w0 image.jpg)'"
          }
        }
      ]
    }
  ]
}' > request.json

curl https://ai.pgpt.cloud/gemini/v1/chat/completion \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <API_KEY>" \
-d @request.json
import requests
from meutils.io.image import image_to_base64

HOST = 'https://ai.pgpt.cloud/'
API_KEY = '<YOUR_API_KEY>'

url = f'{HOST}/gemini/v1/chat/completions'
headers = {
    'accept': 'application/json',
    "Authorization": f"Bearer {KEY}"
}
image_data = image_to_base64('test-assets/test1.jpg', for_image_url=False)
payload = {
    "model": "gemini-pro-vision",
    "contents": [
        {
            "role": "user",
            "parts": [
                {
                    "text": "这个图上有什么"
                },
                {
                    "inline_data": {
                        "mime_type": "image/jpeg",
                        "data": image_data
                    }
                }
            ]
        }
    ],
    "stream": False
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())

返回示范

{
    "message": "太阳系是一个由太阳、八大行星、矮行星、卫星、彗星、小行星等天体组成的系统。太阳系位于银河系中,是银河系中已知唯一存在生命的行星系"
}

Endpoint

https://ai.pgpt.cloud/gemini/v1/chat/completions

Method

POST

Request Body

参数 model string required

指定要使用的模型,仅支持 gemini-progemini-pro-vision.

gemini-pro 仅支持文本聊天

gemini-pro-vision 支持图片解析,使用该模型时传递的消息内容必须包含文件数据

参数 contents array[content] required

聊天内容,包含对话历史+最新请求,contents 包含content对象列表,参数如下:

content字段 类型 描述
parts array[part] 单个消息的有序部件,包含 part 对象
role string 用户角色,只能是 user 或者 model
part字段 类型 描述
text string 文本消息
inline_data object[blob] 文件数据对象
blob字段 类型 描述
mime_type string 文件类型,支持"image/png", "image/jpeg", "image/heic", "image/heif", "image/webp".
data object[blob] 文件base64数据

注意:parts参数中,textinline_data 必须在独立的object中,不可放在一起。

参数 stream boolean optional default to false

设置消息返回的形式,为 true 时,返回的是实时的流数据片段,为 false 时返回的是完整的消息

参数 - temperature number Optional Defaults to 1

要使用的采样温度,介于0和2之间。较高的值(如0.8)会使输出更加随机,而较低的值(如0.2)会使输出更加集中和确定性。

参数 max_tokens integer Optional Defaults to 4096

在聊天补全中生成的最大令牌数。 输入令牌和生成令牌的总长度受模型上下文长度的限制。

Response

参数 message string

根据问题返回的消息

错误代码

Error Code Meaning
400 Invalid request: there was an issue with the format or content of your request.
401 Unauthorized: there's an issue with your API key.
403 Forbidden: your API key does not have permission to use the specified resource.
404 Not found: the requested resource was not found.
429 Your account has hit a rate limit.
500 An unexpected error has occurred internal to Anthropic's systems.
529 Your API is temporarily overloaded.

When receiving a streaming response via SSE, it's possible that an error can occur after returning a 200 response, in which case error handling wouldn't follow these standard mechanisms.