文心一言 ERNIE-LLM 大模型 API 接口

文心一言 ERNIE-LLM 大模型 API 接口

文心一言 ERNIE 系列大模型是百度自研的超大规模语言模型,在自然语言处理领域,ERNIE 系列表现出色,广泛适用于各领域复杂任务场景。ERNIE 系列模型支持接入百度搜索进行实时信息检索,可提供强大的语义理解、生成和问答能力。

接口地址

POST https://wcode.net/api/gpt/v1/chat/completions

API 兼容 OpenAI 的接口规范,也就是可以直接使用 OpenAI 的 SDK 来调用大模型。仅需要将 BASE_URL 替换为 https://wcode.net/api/gpt/v1 即可使用 OpenAI SDK 进行调用。

请求方法

POST

请求头(Request Headers)

Header 备注 示例 相关链接
Authorization Bearer API_KEY 格式:Bearer + 空格 + API_KEY Bearer sk-..... 获取 API_KEY 入口:https://wcode.net/get-apikey
Content-Type application/json 固定为 application/json

请求参数

🚀 model | ✅️必填 | string | 模型ID,可选 model 模型列表(部分):

模型ID 模型名称 每 1000 tokens 费用 更新日期
ernie-4.0-turbo-128k ERNIE-4.0-Turbo-128K 0.075 2024-10-31
ernie-4.0-8k ERNIE-4.0-8K 0.1125 2024-10-25
ernie-speed-128k ERNIE-Speed-128K 0.04 2024-06-27

🚀 messages | ✅️必填 | array | 由历史对话组成的消息列表。array 中的每个元素形式通常为 {"role": 角色, "content": 内容}。角色当前可选值为:systemuserassistant

messages[0]中支持 rolesystem

一般情况下,userassistant 需要交替出现,且 messages 中最后一个元素的 roleuser


🚀 stream | 选填 | boolean | 默认值 false | 是否流式输出。

false(默认值):模型生成完所有内容后一次性返回结果。

true:返回符合 SSE 协议的响应,边生成边输出,即每生成一部分内容就立即输出一个片段(chunk),最后以一条 data: [DONE] 消息结束。


🚀 web_search | 选填 | object | 用于控制模型在生成文本时是否使用互联网搜索结果进行参考。不传此参数则不启用互联网搜索。

部分模型可能不支持配置该参数。

配置示例 1,开启实时搜索:

{
    "model": "ernie-4.0-turbo-128k",
    "messages": [
        {
            "role": "user",
            "content": "今天有哪些重要新闻?"
        }
    ],
    "web_search": {
        "enable": true
    }
}

配置示例 2,开启实时搜索功能,且开启角标返回(响应内容会附上角标,并带上角标对应的搜索溯源信息):

{
    "model": "ernie-4.0-turbo-128k",
    "messages": [
        {
            "role": "user",
            "content": "今天有哪些重要新闻?"
        }
    ],
    "web_search": {
        "enable": true,
        "enable_citation": true
    }
}

配置示例 3,开启实时搜索功能,且开启角标返回,且返回搜索溯源信息:

{
    "model": "ernie-4.0-turbo-128k",
    "messages": [
        {
            "role": "user",
            "content": "今天有哪些重要新闻?"
        }
    ],
    "web_search": {
        "enable": true,
        "enable_citation": true,
        "enable_trace": true
    }
}

🚀 max_completion_tokens | 选填 | int | 允许模型生成的最大 tokens 数。

应用场景:max_completion_tokens 参数适用于需要限制字数(如生成摘要、关键词)、控制成本或减少响应时间的场景。


🚀 temperature | 选填 | float | 默认值 0.95 | 采样温度,用于控制模型生成文本的多样性。取值范围: (0, 1.0]。temperature 越高,生成的文本更多样,反之,生成的文本更确定。


🚀 top_p | 选填 | float | 默认值 0.7 | 核采样概率阈值,用于控制模型生成文本的多样性。取值范围:(0, 1.0]。top_p 越高,生成的文本更多样。反之,生成的文本更确定。

由于 temperature 与 top_p 均可以控制生成文本的多样性,因此建议您只设置其中一个值。


🚀 seed | 选填 | int | 设置 seed 参数会使文本生成过程更具有确定性,通常用于使模型每次运行的结果一致。取值范围:(0, 2^31-1)

在每次模型调用时传入相同的 seed 值,并保持其他参数不变,模型将很可能返回相同的结果。


🚀 frequency_penalty | 选填 | float | 控制模型生成文本时的内容重复度。取值范围:[-2.0, 2.0]。正数会减少重复度,负数会增加重复度。

适用场景:

较高的 frequency_penalty 适用于要求多样性、趣味性或创造性的场景,如创意写作或头脑风暴。

较低的 frequency_penalty 适用于要求一致性或专业术语的场景,如技术文档或其他正式文档。


🚀 stop | 选填 | array | 使用 stop 参数后,当模型生成的文本以某个元素结尾时,将自动停止生成。

适用场景:可以在 stop 参数中传入敏感词来控制模型的输出。

注意事项:1) array 每个元素长度不超过 20 字符;2) 最多4个元素。


🚀 user | 选填 | string | 最终用户的唯一标识符。

返回参数

不同模型返回参数可能存在差异,请以实际返回为准。

返回参数 数据类型 说明
id string 系统生成的标识本次调用的id。
model string 本次调用的模型名。
choices array 模型生成内容的详情。
choices[i].finish_reason string 结束标志。
choices[i].message object 模型生成的消息。
choices[i].message.role string 生成消息的角色。
choices[i].message.content string 生成消息的内容。
choices[i].index int 生成的结果序列编号。
created int 请求被创建时的时间戳。
usage object 请求所消耗的 tokens 数据。
usage.prompt_tokens int 用户输入转换成 token 后的数量。
usage.completion_tokens int 模型生成回复转换为 token 后的数量。
usage.total_tokens int prompt_tokens 与 completion_tokens 的总和。

响应头(Response Headers)

Header 说明 示例 相关链接
X-Account-Balance API_KEY 余额(元) 123.0165 API_KEY 费用充值入口:https://wcode.net/apikey-recharge

Python 代码示例(Requests,ernie-4.0-turbo-128k)

import requests
import json

url = "https://wcode.net/api/gpt/v1/chat/completions"

payload = json.dumps({
  "model": "ernie-4.0-turbo-128k",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": "你好"
    }
  ]
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer API_KEY'     # TODO: 这里的 API_KEY 需要替换,获取 API_KEY 入口:https://wcode.net/get-apikey
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

Java 代码示例(OkHttp,ernie-4.0-turbo-128k)

OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"model\":\"ernie-4.0-turbo-128k\",\"messages\":[{\"role\":\"system\",\"content\":\"You are a helpful assistant.\"},{\"role\":\"user\",\"content\":\"你好\"}]}");
Request request = new Request.Builder()
  .url("https://wcode.net/api/gpt/v1/chat/completions")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer API_KEY")     // TODO: 这里的 API_KEY 需要替换,获取 API_KEY 入口:https://wcode.net/get-apikey
  .build();
Response response = client.newCall(request).execute();

PHP 代码示例(Guzzle,ernie-4.0-turbo-128k)

<?php
$client = new Client();
$headers = [
  'Content-Type' => 'application/json',
  'Authorization' => 'Bearer API_KEY'     // TODO: 这里的 API_KEY 需要替换,获取 API_KEY 入口:https://wcode.net/get-apikey
];
$body = '{
  "model": "ernie-4.0-turbo-128k",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": "你好"
    }
  ]
}';
$request = new Request('POST', 'https://wcode.net/api/gpt/v1/chat/completions', $headers, $body);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();

...其他编程语言可参考下方 curl http 请求示例进行调用

请求示例 1(ernie-4.0-turbo-128k)

curl --request POST 'https://wcode.net/api/gpt/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer API_KEY' \
--data '{
    "model": "ernie-4.0-turbo-128k",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "你好"
        }
    ]
}'

响应示例 1(ernie-4.0-turbo-128k)

{
    "id": "as-2ug8yfjji7",
    "object": "chat.completion",
    "created": 1734684068,
    "model": "ernie-4.0-turbo-128k",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "你好!请问有什么我可以帮助你的吗?"
            },
            "finish_reason": "normal"
        }
    ],
    "usage": {
        "prompt_tokens": 7,
        "completion_tokens": 9,
        "total_tokens": 16
    }
}

请求示例 1.1(实时搜索,ernie-4.0-turbo-128k)

curl --request POST 'https://wcode.net/api/gpt/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer API_KEY' \
--data '{
    "model": "ernie-4.0-turbo-128k",
    "messages": [
        {
            "role": "user",
            "content": "今天有哪些重要新闻?"
        }
    ],
    "web_search": {
        "enable": true
    }
}'

响应示例 1.1(ernie-4.0-turbo-128k)

{
    "id": "as-u27gytre4a",
    "object": "chat.completion",
    "created": 1734699271,
    "model": "ernie-4.0-turbo-128k",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "今天的重要新闻涵盖多个领域,以下是一些今天的重要新闻概览:### 经济与产业\n\n1. **全国消费品以旧换新热度不减**\n   - 据商务部消息,截至12月19日,全国汽车报废更新近270万辆,汽车置换更新超310万辆,家电以旧换新产品超5210万台,以旧换新政策对拉动消费的作用显著。\n\n2. **国产大飞机C919新突破**\n   - 国产大飞机C919累计承运旅客已突破100万人次,标志着中国商用飞机制造业迈出了重要一步。\n\n- **市场监管总局出台新办法**\n  - 市场监管总局近日出台了《集贸市场计量监督管理办法》,旨在加强集贸市场的计量监督管理,维护市场秩序和消费者权益。\n\n这些新闻事件反映了当前的热点和动态。如需更多详细信息,建议访问各大新闻网站或媒体平台。"
            },
            "finish_reason": "normal"
        }
    ],
    "usage": {
        "prompt_tokens": 11863,
        "completion_tokens": 485,
        "total_tokens": 12348,
        "prompt_tokens_details": {
            "cached_tokens": 0
        }
    }
}

请求示例 1.2(多轮对话,ernie-4.0-turbo-128k)

curl --request POST 'https://wcode.net/api/gpt/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer API_KEY' \
--data '{
    "model": "ernie-4.0-turbo-128k",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "你好"
        },
        {
            "role": "assistant",
            "content": "你好!有什么可以帮助你的吗?"
        },
        {
            "role": "user",
            "content": "什么是AGI?"
        }
    ]
}'

响应示例 1.2(多轮对话,ernie-4.0-turbo-128k)

{
    "id": "as-v90q2qeacm",
    "object": "chat.completion",
    "created": 1734700442,
    "model": "ernie-4.0-turbo-128k",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "AGI是Artificial General Intelligence的缩写,也就是通用人工智能。它指的是能够执行各种任务、理解复杂概念、进行学习和适应环境的人工智能系统,类似于人类的智能水平。与只能完成特定任务的人工智能不同,AGI的目标是拥有更广泛、更全面的智能能力。不过,目前AGI还处于研究和开发阶段,实现真正意义上的人类级别智能还有很长的路要走。"
            },
            "finish_reason": "normal"
        }
    ],
    "usage": {
        "prompt_tokens": 18,
        "completion_tokens": 76,
        "total_tokens": 94
    }
}

请求示例 2(ernie-4.0-turbo-128k,流式输出)

curl --request POST 'https://wcode.net/api/gpt/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer API_KEY' \
--data '{
    "model": "ernie-4.0-turbo-128k",
    "stream": true,
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "你好"
        }
    ]
}'

响应示例 2(ernie-4.0-turbo-128k,流式输出)

data: {"id":"as-0svd1gjsac","object":"chat.completion.chunk","created":1734700254,"model":"ernie-4.0-turbo-128k","choices":[{"index":0,"delta":{"content":"你好!"},"finish_reason":null}]}

data: {"id":"as-0svd1gjsac","object":"chat.completion.chunk","created":1734700254,"model":"ernie-4.0-turbo-128k","choices":[{"index":0,"delta":{"content":"请问有什么"},"finish_reason":null}]}

data: {"id":"as-0svd1gjsac","object":"chat.completion.chunk","created":1734700254,"model":"ernie-4.0-turbo-128k","choices":[{"index":0,"delta":{"content":"我可以帮助"},"finish_reason":null}]}

data: {"id":"as-0svd1gjsac","object":"chat.completion.chunk","created":1734700254,"model":"ernie-4.0-turbo-128k","choices":[{"index":0,"delta":{"content":"你的吗"},"finish_reason":null}]}

data: {"id":"as-0svd1gjsac","object":"chat.completion.chunk","created":1734700254,"model":"ernie-4.0-turbo-128k","choices":[{"index":0,"delta":{"content":"?"},"finish_reason":null}]}

data: {"id":"as-0svd1gjsac","object":"chat.completion.chunk","created":1734700254,"model":"ernie-4.0-turbo-128k","choices":[{"index":0,"delta":{"content":""},"finish_reason":"normal"}],"usage":{"prompt_tokens":7,"completion_tokens":9,"total_tokens":16}}

data: [DONE]

异常响应示例

{
    "error": {
        "message": "Invalid API-KEY",
        "type": "invalid_request_error",
        "param": null,
        "code": null
    }
}