Skip to content

Gemini原生格式 API 文档

普通对话 流式输出

基础信息

  • Base URL: www.dmxapi.cn
  • 模型名称: gemini-2.5-flash
  • 请求方式: POST

接口地址

/v1beta/models/{model}:streamGenerateContent?key=******&alt=sse

请求参数

参数类型必填说明
modelstring模型名称
keystringAPI密钥(已隐藏)
altstring返回格式(sse)

请求示例 (Python)

python
import json
import requests

# 配置参数
model = "gemini-2.5-flash"  # 使用的AI模型名称
API_KEY = "sk-********************************"  # 替换为你的API密钥
# 构建API请求URL,包含模型名称、API密钥和流式响应格式
url = f"https://www.dmxapi.cn/v1beta/models/{model}:streamGenerateContent?key={API_KEY}&alt=sse"

# 构建请求体数据
payload = json.dumps({
    "system_instruction": {  # 系统指令,定义AI助手的角色和行为
        "parts": [{"text": "你是我的助手,你叫 小巴。"}]
    },
    "contents": [  # 用户输入的对话内容
        {"role": "user", "parts": [{"text": "随机生成300个字"}]}
    ]
})

# 设置HTTP请求头,指定内容类型为JSON
headers = {"Content-Type": "application/json"}

# 发送POST请求到API端点
# stream=True 启用流式响应,可以实时接收数据
response = requests.post(url, headers=headers, data=payload, stream=True)
response.encoding = 'utf-8'  # 设置正确的编码格式,确保中文字符正确显示

# 解析SSE(Server-Sent Events)流式响应的函数
def parse_sse_response(response):
    """
    解析Server-Sent Events格式的响应
    
    Args:
        response: requests响应对象,包含流式数据
        
    Returns:
        str: 完整的AI生成文本
    """
    full_text = ""  # 用于存储完整的响应文本
    
    # 逐行读取流式响应数据
    for line in response.iter_lines(decode_unicode=True):
        # 检查是否是SSE数据行(以'data: '开头)
        if line.startswith('data: '):
            # 提取data后的JSON内容,去掉'data: '前缀
            json_str = line[6:]
            try:
                # 解析JSON数据
                data = json.loads(json_str)
                # 检查响应数据结构并提取文本内容
                if 'candidates' in data and len(data['candidates']) > 0:
                    candidate = data['candidates'][0]  # 获取第一个候选响应
                    # 检查候选响应是否包含内容和部分
                    if 'content' in candidate and 'parts' in candidate['content']:
                        # 遍历内容的各个部分
                        for part in candidate['content']['parts']:
                            # 如果部分包含文本,则提取并处理
                            if 'text' in part:
                                text = part['text']
                                full_text += text  # 累积完整文本
                                print(text, end='', flush=True)  # 实时输出文本片段,不换行
            except json.JSONDecodeError:
                # 如果JSON解析失败,跳过该行继续处理下一行
                continue
    
    return full_text  # 返回完整的生成文本

# 调用解析函数处理响应并获取结果
result_text = parse_sse_response(response)
# 输出完整的AI回复内容
print(f"\n\n完整回复:{result_text}")

注意事项

  1. 请妥善保管API密钥,不要泄露
  2. 请求体需使用JSON格式
  3. 响应格式为SSE(Server-Sent Events)

一个 Key 用全球大模型