SDK调用文心一言如何接入,文心一言API接入教程

一、前期准备

  1. 注册百度智能云账号

  2. 了解API接口

    • 在百度智能云开放平台中,找到文心一言API的详情页,了解提供的API接口类型(如云端API、移动端API、离线版API等)及其功能特点。
    • 根据应用场景和需求,选择适合的API接口。

二、创建应用并获取API密钥

  1. 登录百度智能云千帆控制台

    • 使用百度智能云账号登录千帆控制台。
  2. 创建应用

    • 在控制台中,点击"创建应用"按钮。
    • 根据提示填写应用名称、描述等信息。
    • 创建成功后,将获取到AppID、API Key、Secret Key等关键信息。
  3. 获取API密钥

    • 在应用详情页中查看并复制API Key和Secret Key。这两个密钥将用于后续调用API接口时的身份验证。

最后就是能过SDK调用

调用本接口,发起一次对话请求。

支持模型列表

模型名称 模型版本 model 参数值
ERNIE 4.0 ERNIE-4.0-8K-Latest ernie-4.0-8k-latest
ERNIE 4.0 ERNIE-4.0-8K-Preview ernie-4.0-8k-preview
ERNIE 4.0 ERNIE-4.0-8K ernie-4.0-8k
ERNIE 4.0 Turbo ERNIE-4.0-Turbo-8K-Latest ernie-4.0-turbo-8k-latest
ERNIE 4.0 Turbo ERNIE-4.0-Turbo-8K-Preview ernie-4.0-turbo-8k-preview
ERNIE 4.0 Turbo ERNIE-4.0-Turbo-8K ernie-4.0-turbo-8k
ERNIE 4.0 Turbo ERNIE-4.0-Turbo-128K ernie-4.0-turbo-128k
ERNIE 3.5 ERNIE-3.5-8K-Preview ernie-3.5-8k-preview
ERNIE 3.5 ERNIE-3.5-8K ernie-3.5-8k
ERNIE 3.5 ERNIE-3.5-128K ernie-3.5-128k
ERNIE Speed ERNIE-Speed-8K ernie-speed-8k
ERNIE Speed ERNIE-Speed-128K ernie-speed-128k
ERNIE Speed ERNIE-Speed-Pro-128K ernie-speed-pro-128k
ERNIE Lite ERNIE-Lite-8K ernie-lite-8k
ERNIE Lite ERNIE-Lite-Pro-128K ernie-lite-pro-128k
ERNIE Tiny ERNIE-Tiny-8K ernie-tiny-8k
ERNIE Character ERNIE-Character-8K ernie-char-8k
ERNIE Character ERNIE-Character-Fiction-8K ernie-char-fiction-8k
ERNIE-Novel-8K ERNIE-Novel-8K ernie-novel-8k

使用说明

本文API支持通过Python SDK、Go SDK和Node.js SDK调用,调用流程请参考SDK安装及使用流程

  • Python SDK,请确保使用最新版本,版本需≥0.4.11。
  • Go SDK,请确保使用最新版本,版本需≥0.0.13。
  • Node.js SDK,请确保使用最新版本,版本需≥0.2.2。

SDK调用

调用示例(非流式)

使用**model字段**,指定平台支持预置服务的模型,调用示例如下。

  • Python

  • Go

  • Java

  • Node.js

    from qianfan import Qianfan

    client = Qianfan(

      # 方式一:使用安全认证AK/SK鉴权
      # 替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk,如何获取请查看https://cloud.baidu.com/doc/Reference/s/9jwvz2egb
      access_key="your_iam_ak",
      secret_key="your_iam_sk",
      #app_id="", # 选填,不填写则使用默认appid
    
      # 方式二:使用应用BearerToken鉴权
      # 替换下列示例中参数,将your_BearerToken替换为真实值,如何获取请查看https://cloud.baidu.com/doc/IAM/s/Mm2x80phi
      #api_key="your_BearerToken" 
      #app_id="", # 选填,不填写则使用默认appid
    

    )

    completion = client.chat.completions.create(
    model="ernie-3.5-8k", # 指定特定模型
    messages=[
    # 也可以不设置system字段
    {'role': 'system', 'content': '平台助手'},
    {'role': 'user', 'content': '你好'}
    ]
    )

    print(completion.choices[0])

返回示例(非流式)

  • Python

  • Go

  • Java

  • Node.js

    finish_reason='normal' index=0 message=ChatCompletionMessage(content='您好!请问您是想了解关于"平台助手"的信息吗?如果是的话,能否具体说明一下您想了解的是哪个平台或者哪种类型的助手呢?这样我可以为您提供更详细和准确的信息。', role='assistant', name=None, content_type=None, function_call=None) need_clear_history=None ban_round=None function_call=None search_info=None flag=0 tools_info=None

调用示例(流式)

  • Python

  • Go

  • Java

  • Node.js

    from qianfan import Qianfan

    client = Qianfan(

      # 方式一:使用安全认证AK/SK鉴权
      # 替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk,如何获取请查看https://cloud.baidu.com/doc/Reference/s/9jwvz2egb
      access_key="your_iam_ak",
      secret_key="your_iam_sk",
      #app_id="", # 选填,不填写则使用默认appid
    
      # 方式二:使用应用BearerToken鉴权
      # 替换下列示例中参数,将your_BearerToken替换为真实值,如何获取请查看https://cloud.baidu.com/doc/IAM/s/Mm2x80phi
      #api_key="your_BearerToken" 
      #app_id="", # 选填,不填写则使用默认appid
    

    )

    completion = client.chat.completions.create(
    model="ernie-3.5-8k", # 指定特定模型
    messages=[
    {'role': 'system', 'content': '平台助手'},
    {'role': 'user', 'content': '你好'}
    ],
    stream=True
    )

    for r in completion:
    print(r)

返回示例(流式)

  • Python

  • Go

  • Java

  • Node.js

    id='as-gue7zc41p4' choices=[CompletionChunkChoice(delta=ChoiceDelta(content='您好!'), finish_reason=None, index=0)] created=1733465174 model='ernie-3.5-8k' object='chat.completion.chunk' usage=None statistic=CompletionStatistic(first_token_latency=0.49492, request_latency=0.0, total_latency=0.0, start_timestamp=1733465172918.0, avg_output_tokens_per_second=0.0)
    id='as-gue7zc41p4' choices=[CompletionChunkChoice(delta=ChoiceDelta(content='很高兴与您'), finish_reason=None, index=0)] created=1733465174 model='ernie-3.5-8k' object='chat.completion.chunk' usage=None statistic=CompletionStatistic(first_token_latency=0.49492, request_latency=0.0, total_latency=0.0, start_timestamp=1733465172918.0, avg_output_tokens_per_second=0.0)
    id='as-gue7zc41p4' choices=[CompletionChunkChoice(delta=ChoiceDelta(content='交流。'), finish_reason=None, index=0)] created=1733465174 model='ernie-3.5-8k' object='chat.completion.chunk' usage=None statistic=CompletionStatistic(first_token_latency=0.49492, request_latency=0.0, total_latency=0.0, start_timestamp=1733465172918.0, avg_output_tokens_per_second=0.0)
    id='as-gue7zc41p4' choices=[CompletionChunkChoice(delta=ChoiceDelta(content='您提到的'), finish_reason=None, index=0)] created=1733465174 model='ernie-3.5-8k' object='chat.completion.chunk' usage=None statistic=CompletionStatistic(first_token_latency=0.49492, request_latency=0.0, total_latency=0.0, start_timestamp=1733465172918.0, avg_output_tokens_per_second=0.0)
    id='as-gue7zc41p4' choices=[CompletionChunkChoice(delta=ChoiceDelta(content='"平台'), finish_reason=None, index=0)] created=1733465174 model='ernie-3.5-8k' object='chat.completion.chunk' usage=None statistic=CompletionStatistic(first_token_latency=0.49492, request_latency=0.0, total_latency=0.0, start_timestamp=1733465172918.0, avg_output_tokens_per_second=0.0)
    ...

function call调用示例

  • 第一次请求
  • Python

    from qianfan import Qianfan
    import os

    #通过环境变量初始化认证信息

    使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk

    os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
    os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"

    client = Qianfan()

    completion = client.chat.completions.create(
    model="ernie-3.5-8k",
    messages=[{"role": "user", "content": "你好,我想知道明天北京的天气怎么样"}],
    tools=[{
    "type": "function",
    "function": {
    "name": "get_current_weather",
    "description": "天气查询工具",
    "parameters": {
    "properties": {
    "location": {
    "description": "地理位置,精确到区县级别",
    "type": "string"
    },
    "time": {
    "description": "时间,格式为YYYY-MM-DD",
    "type": "string"
    }
    },
    "required": ["location", "time"],
    "type": "object"
    }
    }
    }],
    )

    print(completion.json(ensure_ascii=False))

  • 第二次请求

  • Python

    from qianfan import Qianfan
    import os

    #通过环境变量初始化认证信息

    使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk

    os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
    os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"

    client = Qianfan()

    模拟函数调用并给出结果

    completion = client.chat.completions.create(
    model="ernie-3.5-8k",
    messages=[
    {"role": "user", "content": "你好,我想知道明天北京的天气怎么样"},
    {'content': '', 'role': 'assistant', 'name': None, 'tool_calls': [{'id': '19eaa3faef0ca000', 'type': 'function', 'function': {'name': 'get_current_weather', 'arguments': '{"location": "北京", "time": "2024-12-14"}'}}], 'tool_call_id': None},
    {"role": "tool", "tool_call_id": "19exxxxx00", "name": "get_current_weather", "content": "{"temperature": "20", "unit": "摄氏度", "description": "北京"}"},
    ],
    tools=[{
    "type": "function",
    "function": {
    "name": "get_current_weather",
    "description": "天气查询工具",
    "parameters": {
    "properties": {
    "location": {
    "description": "地理位置,精确到区县级别",
    "type": "string"
    },
    "time": {
    "description": "时间,格式为YYYY-MM-DD",
    "type": "string"
    }
    },
    "required": ["location", "time"],
    "type": "object"
    }
    }
    }],
    )

    print(completion.json(ensure_ascii=False))

function call响应示例

  • 第一次响应
  • Python

    {
    "id": "as-0bd3fqniat",
    "choices": [{
    "finish_reason": "tool_calls",
    "index": 0,
    "message": {
    "content": "",
    "role": "assistant",
    "name": null,
    "tool_calls": [{
    "id": "19eaa550a7344000",
    "type": "function",
    "function": {
    "name": "get_current_weather",
    "arguments": "{"location": "北京", "time": "2024-12-14"}"
    }
    }],
    "tool_call_id": null
    },
    "ban_round": null,
    "flag": 0
    }],
    "created": 1734078514,
    "model": "ernie-3.5-8k",
    "object": "chat.completion",
    "usage": {
    "completion_tokens": 26,
    "prompt_tokens": 7,
    "total_tokens": 33
    },
    "statistic": {
    "first_token_latency": 0,
    "request_latency": 2.197312,
    "total_latency": 2.557672722,
    "start_timestamp": 1734078512335.0,
    "avg_output_tokens_per_second": 10.165491376734478
    }
    }

  • 第二次响应

  • Python

    {
    "id": "as-1yunj9bnbx",
    "choices": [{
    "finish_reason": "normal",
    "index": 0,
    "message": {
    "content": "明天北京的天气温度是20摄氏度。请问您还有其他需要了解的吗?",
    "role": "assistant",
    "name": null,
    "tool_calls": null,
    "tool_call_id": null
    },
    "ban_round": null,
    "flag": 0
    }],
    "created": 1734078216,
    "model": "ernie-3.5-8k",
    "object": "chat.completion",
    "usage": {
    "completion_tokens": 15,
    "prompt_tokens": 26,
    "total_tokens": 41
    },
    "statistic": {
    "first_token_latency": 0,
    "request_latency": 2.704354,
    "total_latency": 2.936778522,
    "start_timestamp": 1734078212974.0,
    "avg_output_tokens_per_second": 5.107637463169924
    }
    }

请求参数

Python SDK请求参数说明如下,Go SDK参数请参考Go SDK-对话Chat V2参数相关说明

名称 类型 必填 描述
model string 模型ID,可选值参考本文支持模型列表
messages List 聊天上下文信息。说明: (1)messages成员不能为空,1个成员表示单轮对话,多个成员表示多轮对话,例如: · 1个成员示例,"messages": [ {"role": "user","content": "你好"}] · 3个成员示例,"messages": [ {"role": "user","content": "你好"},{"role":"assistant","content":"需要什么帮助"},{"role":"user","content":"自我介绍下"}] (2) 最后一个message为当前请求的信息,前面的message为历史对话信息 (3)messages的role说明: · 第一条message的role必须是user或system · 最后一条message的role必须是user · 当第一条message的role为user,role值需要依次为user/function -> assistant -> user/function ...,即奇数位message的role值必须为user或function,偶数位message的role值为assistant,例如: 示例中message中的role值分别为user、assistant、user、assistant、user;奇数位(红框)message中的role值为user,即第1、3、5个message中的role值为user;偶数位(蓝框)值为assistant,即第2、4个message中的role值为assistant · 当第一条message的role为system,role值需要依次为system -> user/function -> assistant -> user/function ... (4)message中的content总长度不能超过对应model的输入字符限制和输入tokens限制,请查看各模型上下文长度说明
stream bool 是否以流式接口的形式返回数据,说明: (1)beam search模型只能为false (2)默认false
stream_options object 流式响应的选项,当字段stream为true时,该字段生效
temperature float 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)默认0.95,范围 (0, 1.0],不能为0
top_p float 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)默认0.7,取值范围 [0, 1.0]
penalty_score float 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)默认1.0,取值范围:[1.0, 2.0]
max_completion_tokens int 指定模型最大输出token数,说明: (1)取值范围[2, 2048]
seed int 说明: (1)取值范围: (0,2147483647‌),会由模型随机生成,默认值为空 (2)如果指定,系统将尽最大努力进行确定性采样,以便使用相同seed和参数的重复请求返回相同的结果
stop List 生成停止标识,当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: (1)每个元素长度不超过20字符 (2)最多4个元素
user string 表示最终用户的唯一标识符
frequency_penalty float 说明: (1)正值根据迄今为止文本中的现有频率对新token进行惩罚,从而降低模型逐字重复同一行的可能性 (2)取值范围:[-2.0, 2.0] (3)支持以下模型: · ernie-speed-8k · ernie-speed-128k · ernie-speed-pro-128k · ernie-lite-8k · ernie-lite-pro-128k · ernie-tiny-8k · ernie-char-8k · ernie-char-fiction-8k
presence_penalty float 说明: (1)正值根据token记目前是否出现在文本中来对其进行惩罚,从而增加模型谈论新主题的可能性 (2)取值范围:[-2.0, 2.0] (3)支持以下模型: · ernie-speed-8k · ernie-speed-128k · ernie-speed-pro-128k · ernie-lite-8k · ernie-lite-pro-128k · ernie-tiny-8k · ernie-char-8k · ernie-char-fiction-8k
tools List(Tool) 一个可触发函数的描述列表,支持模型请参考本文**支持模型列表**-是否支持function call功能
tool_choice string / tool_choice 说明: (1)支持模型请参考本文**支持模型列表** -是否支持function call功能 (2)string类型,可选值如下: · none:不希望模型调用任何function,只生成面向用户的文本消息 · auto:模型会根据输入内容自动决定是否调用函数以及调用哪些function · required:希望模型总是调用一个或多个function (3)当为tool_choice类型,指在函数调用场景下,提示大模型选择指定的函数,指定的函数名必须在tools中存在
parallel_tool_calls bool 说明: (1)支持模型请参考本文**支持模型列表** -是否支持function call功能 (2)可选值: · true:表示开启函数并行调用,默认开启 · false:表示关闭函数并行调用
response_format response_format 指定响应内容的格式
retry_count int 重试次数,默认1次
request_timeout float 请求超时时间,默认60秒
backoff_factor float 请求重试参数,用于指定重试的策略,默认为0

message说明

名称 类型 必填 描述
role string 当前支持以下: · user: 表示用户 · assistant: 表示对话助手 · system:表示人设
name string message名
content string 对话内容,说明: (1)不能为空 (2)最后一个message对应的content不能为blank字符,如空格、"\n"、"\r"、"\f"等
tool_calls List[ToolCall] 函数调用,function call场景下第一轮对话的返回,第二轮对话作为历史信息在message中传入
tool_call_id string 说明: (1)当role=tool时,该字段必填 (2)模型生成的function call id,对应tool_calls中的tool_calls[].id (3)调用方应该传递真实的、由模型生成id,否则效果有损

stream_options说明

名称 类型 必填
include_usage bool 流式响应是否输出usage,说明: · ture:是,设置为true时,在最后一个chunk会输出一个字段,这个chunk上的usage字段显示整个请求的token统计信息 · false:否,流式响应默认不输出usage

Tool 说明

名称 类型 必填 描述
type string 工具类型,取值function
function function 函数说明

function说明

Tool中function说明如下

名称 类型 必填 描述
name string 函数名
description string 函数描述
parameters object 函数请求参数,JSON Schema 格式,参考JSON Schema描述

tool_choice说明

名称 类型 必填 描述
type string 指定工具类型,固定值function
function function 指定要使用的函数

function说明

tool_choice中function说明如下

名称 类型 必填 描述
name string 指定要使用的函数名

response_format说明

名称 类型 描述
type string 指定响应内容的格式,可选值: · json_object:以json格式返回,可能出现不满足效果情况 · text:以文本格式返回,默认为text · json_schema:以json_scheam规定的格式返回
json_schema object json_schema格式,请参考JSON Schema描述;当type为json_schema时,该参数必填

响应参数

名称 类型 描述
id string 本次请求的唯一标识,可用于排查问题
object string 回包类型 chat.completion:多轮对话返回
created int 时间戳
model string 模型ID
choices object stream=false时,返回内容
choices sse_choices stream=true时,返回内容
usage usage token统计信息,说明: (1)同步请求默认返回 (2)流式请求默认不返回,当开启stream_options.include_usage=True时,会在最后一个chunk返回实际内容,其他chunk返回null

choices说明

当stream=false时,返回内容如下:

名称 类型 描述
index int choice列表中的序号
message message 响应信息,当stream=false时返回
finish_reason string 输出内容标识,说明: · normal:输出内容完全由大模型生成,未触发截断、替换 · stop:输出结果命中入参stop中指定的字段后被截断 · length:达到了最大的token数 · content_filter:输出内容被截断、兜底、替换为**等 · tool_calls:函数调用
flag int 安全细分类型,说明: 当stream=false,flag值含义如下: · 0或不返回:安全 · 1:低危不安全场景,可以继续对话 · 2:禁聊:不允许继续对话,但是可以展示内容 · 3:禁止上屏:不允许继续对话且不能上屏展示 · 4:撤屏
ban_round int 当flag 不为 0 时,该字段会告知第几轮对话有敏感信息;如果是当前问题,ban_round = -1

sse_choices说明

当stream=true时,返回内容如下:

名称 类型 描述
index int choice列表中的序号
delta delta 响应信息,当stream=true时返回
finish_reason string 输出内容标识,说明: · normal:输出内容完全由大模型生成,未触发截断、替换 · stop:输出结果命中入参stop中指定的字段后被截断· length:达到了最大的token数 · content_filter:输出内容被截断、兜底、替换为**等 · tool_calls:函数调用
flag int 安全细分类型,说明:当stream=true时,返回flag表示触发安全
ban_round int 当flag 不为 0 时,该字段会告知第几轮对话有敏感信息;如果是当前问题,ban_round = -1

delta说明

名称 类型 描述
content string 流式响应内容
tool_calls List[ToolCall] 由模型生成的函数调用,包含函数名称,和调用参数

ToolCall说明

名称 类型 描述
id string function call的唯一标识,由模型生成
type string 固定值function
function function function call的具体内容

function说明

名称 类型 描述
name string 函数名称
arguments string 函数参数

usage说明

名称 类型 描述
prompt_tokens int 问题tokens数(包含历史QA)
prompt_tokens_details int 问题token详情
completion_tokens int 回答tokens数
total_tokens int 总tokens数

prompt_tokens_details说明

名称 类型 描述
search_tokens int 触发检索增强以后膨胀的token;用户可以通过usage.prompt_tokens_details.search_tokens>0判断是否出发了检索增强,并且计算出发检索增强的次数

message说明

名称 类型 必填 描述
role string 当前支持以下: · user: 表示用户 · assistant: 表示对话助手 · system:表示人设
name string message名
content string 对话内容,说明: (1)不能为空 (2)最后一个message对应的content不能为blank字符,如空格、"\n"、"\r"、"\f"等
tool_calls List[ToolCall] 函数调用,function call场景下第一轮对话的返回,第二轮对话作为历史信息在message中传入
tool_call_id string 说明: (1)当role=tool时,该字段必填 (2)模型生成的function call id,对应tool_calls中的tool_calls[].id (3)调用方应该传递真实的、由模型生成id,否则效果有损
相关推荐
UTF杠81 小时前
Sonatype Nexus OSS 构建私有docker 仓库
运维·docker·容器·开源
thinking-fish1 小时前
LVS四层反向代理
运维·网络·lvs
LuckyLay1 小时前
Linux网络知识——路由表
linux·服务器·网络·路由·ip route
ydswin1 小时前
Chrony:让你的服务器时间精准到微秒级的神器!
linux
刘泽美2 小时前
Ubuntu/centOS 如何安装 OpenGL
linux·运维·ubuntu
qiu_shi_2 小时前
1.1.1 C语言常用的一些函数(持续更新)
运维·服务器·网络
kucupung2 小时前
【编译构建】用cmake编译libjpeg动态库并实现转灰度图片
linux·c++
釉色清风2 小时前
【Linux】常见指令(一)
linux·运维·服务器
扛枪的书生2 小时前
Linux 提权指南
linux·渗透·kali·提权
北京迅为3 小时前
【北京迅为】iTOP-4412全能版使用手册-第七十七章 Qt串口编程
linux·嵌入式硬件·4412开发板