当前位置: 首页 > article >正文

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

一、前期准备

  1. 注册百度智能云账号

    • 前往百度智能云官网注册一个账号。这是接入文心一言API的基础。
  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.0ERNIE-4.0-8K-Latesternie-4.0-8k-latest
ERNIE 4.0ERNIE-4.0-8K-Previewernie-4.0-8k-preview
ERNIE 4.0ERNIE-4.0-8Kernie-4.0-8k
ERNIE 4.0 TurboERNIE-4.0-Turbo-8K-Latesternie-4.0-turbo-8k-latest
ERNIE 4.0 TurboERNIE-4.0-Turbo-8K-Previewernie-4.0-turbo-8k-preview
ERNIE 4.0 TurboERNIE-4.0-Turbo-8Kernie-4.0-turbo-8k
ERNIE 4.0 TurboERNIE-4.0-Turbo-128Kernie-4.0-turbo-128k
ERNIE 3.5ERNIE-3.5-8K-Previewernie-3.5-8k-preview
ERNIE 3.5ERNIE-3.5-8Kernie-3.5-8k
ERNIE 3.5ERNIE-3.5-128Kernie-3.5-128k
ERNIE SpeedERNIE-Speed-8Kernie-speed-8k
ERNIE SpeedERNIE-Speed-128Kernie-speed-128k
ERNIE SpeedERNIE-Speed-Pro-128Kernie-speed-pro-128k
ERNIE LiteERNIE-Lite-8Kernie-lite-8k
ERNIE LiteERNIE-Lite-Pro-128Kernie-lite-pro-128k
ERNIE TinyERNIE-Tiny-8Kernie-tiny-8k
ERNIE CharacterERNIE-Character-8Kernie-char-8k
ERNIE CharacterERNIE-Character-Fiction-8Kernie-char-fiction-8k
ERNIE-Novel-8KERNIE-Novel-8Kernie-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参数相关说明。

名称类型必填描述
modelstring模型ID,可选值参考本文支持模型列表
messagesList聊天上下文信息。说明:
(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

image.png


· 当第一条message的role为system,role值需要依次为system -> user/function -> assistant -> user/function ...
(4)message中的content总长度不能超过对应model的输入字符限制和输入tokens限制,请查看各模型上下文长度说明
streambool是否以流式接口的形式返回数据,说明:
(1)beam search模型只能为false
(2)默认false
stream_optionsobject流式响应的选项,当字段stream为true时,该字段生效
temperaturefloat说明:
(1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定
(2)默认0.95,范围 (0, 1.0],不能为0
top_pfloat说明:
(1)影响输出文本的多样性,取值越大,生成文本的多样性越强
(2)默认0.7,取值范围 [0, 1.0]
penalty_scorefloat通过对已生成的token增加惩罚,减少重复生成的现象。说明:
(1)值越大表示惩罚越大
(2)默认1.0,取值范围:[1.0, 2.0]
max_completion_tokensint指定模型最大输出token数,说明:
(1)取值范围[2, 2048]
seedint说明:
(1)取值范围: (0,2147483647‌),会由模型随机生成,默认值为空
(2)如果指定,系统将尽最大努力进行确定性采样,以便使用相同seed和参数的重复请求返回相同的结果
stopList生成停止标识,当模型生成结果以stop中某个元素结尾时,停止文本生成。说明:
(1)每个元素长度不超过20字符
(2)最多4个元素
userstring表示最终用户的唯一标识符
frequency_penaltyfloat说明:
(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_penaltyfloat说明:
(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
toolsList(Tool)一个可触发函数的描述列表,支持模型请参考本文支持模型列表-是否支持function call功能
tool_choicestring / tool_choice说明:
(1)支持模型请参考本文支持模型列表-是否支持function call功能
(2)string类型,可选值如下:
· none:不希望模型调用任何function,只生成面向用户的文本消息
· auto:模型会根据输入内容自动决定是否调用函数以及调用哪些function
· required:希望模型总是调用一个或多个function
(3)当为tool_choice类型,指在函数调用场景下,提示大模型选择指定的函数,指定的函数名必须在tools中存在
parallel_tool_callsbool说明:
(1)支持模型请参考本文支持模型列表-是否支持function call功能
(2)可选值:
· true:表示开启函数并行调用,默认开启
· false:表示关闭函数并行调用
response_formatresponse_format指定响应内容的格式
retry_countint重试次数,默认1次
request_timeoutfloat请求超时时间,默认60秒
backoff_factorfloat请求重试参数,用于指定重试的策略,默认为0

message说明

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

stream_options说明

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

Tool 说明

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

function说明

Tool中function说明如下

名称类型必填描述
namestring函数名
descriptionstring函数描述
parametersobject函数请求参数,JSON Schema 格式,参考JSON Schema描述

tool_choice说明

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

function说明

tool_choice中function说明如下

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

response_format说明

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

响应参数

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

choices说明

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

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

sse_choices说明

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

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

delta说明

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

ToolCall说明

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

function说明

名称类型描述
namestring函数名称
argumentsstring函数参数

usage说明

名称类型描述
prompt_tokensint问题tokens数(包含历史QA)
prompt_tokens_detailsint问题token详情
completion_tokensint回答tokens数
total_tokensint总tokens数

prompt_tokens_details说明

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

message说明

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

http://www.kler.cn/a/505095.html

相关文章:

  • 【力扣Hot100】滑动窗口
  • PostgreSQL技术内幕22:vacuum full 和 vacuum
  • LLM实现视频切片合成 前沿知识调研
  • C++:string
  • Anaconda安装(2024最新版)
  • 如何将原来使用cmakelist编译的qt工程转换为可使用Visual Studio编译的项目
  • 检验统计量与p值笔记
  • LabVIEW智能水肥一体灌溉控制系统
  • 查看APK的公钥,MD5信息
  • Pytest入门—allure生成报告
  • Leetcode热题100(双指针篇)
  • 网络网络层ICMP协议
  • Unity用官方第三人称Third Person模板,替换成自己的人物
  • ue5 1.平A,两段连击蒙太奇。鼠标点一下,就放2段动画。2,动画混合即融合,边跑边挥剑,3,动画通知,动画到某一帧,把控制权交给蓝图。就执行蓝图节点
  • 《AI语言模型的技术演进与未来发展趋势:从参数堆叠到智能检索》
  • Android SystemUI——StatusBar视图创建(六)
  • Redis持久化双雄
  • vue3学习日记7 - Home页面
  • 如何在Ubuntu上安装Cmake
  • leetcode hot 100 -划分字母区间
  • CDP中的Hive3之Apache Hive3特性
  • TCP-IP详解卷 TCP的超时与重传
  • springboot整合rabbitmq(消息确认)
  • AWS上搭建Storage Gateway并创建SMB和NFS服务
  • 一招解决word嵌入图片显示不全问题
  • 【vue3项目使用 animate动画效果】