Python调用百度千帆大模型实战指南
2024.09.19 01:23浏览量:613简介:本文介绍其 API 使用方法,包括功能、申请密钥及 Python 调用步骤和代码示例。
精品推荐
千帆大模型平台 ERNIE Lite-Pro资源包
上下文支持128K,兼顾优异的模型效果与推理性能
规格
1亿
时长
12个月
千帆大模型平台 ERNIE Speed-Pro资源包
上下文支持128K,通用能力优异,具备极佳的推理性能
规格
1亿
时长
12个月
千帆大模型平台 ERNIE-4.0-Turbo资源包
相较于ERNIE 4.0在性能表现上更优秀,综合效果表现出色
规格
1000万
时长
6个月
百度发布千帆大模型API接口免费开放使用,赋能科技创新。本文具体介绍运用千帆大模型API接口,实现人工智能高级运用的方法与步骤。无论初学者还是经验丰富的开发者,都可轻松掌握,通过简单的接口请求,实现自然语言处理、图像识别等复杂功能。
在API HUB,你可以找到众多AI技术类API,其中就有百度千帆大模型。ragmentbodyhtml.jpg">
“百度智能云千帆大模型”是百度智能云平台的重要组成部分,融合了多种先进的预训练语言模型和AI技术,致力于为企业和个人开发者提供强大的人工智能解决方案。该模型涵盖了基于Llama2架构的中文增强版本、ERNIE系列的旗舰级模型以及其他百度自研或基于开源框架优化的高性能模型。千帆平台的大模型支持中英双语,适用于对话问答、创作生成、代码生成等多个领域,并根据特定需求进行了优化,如压缩加速、指令微调等,满足不同环境下的部署和使用需求。用户可通过千帆大模型平台选择、训练调优及部署调用所需模型,实现复杂任务的高效处理。
什么是API
API是一个软件解决方案,作为中介,使两个应用程序能够相互交互。以下一些特征让API变得更加有用和有价值:
- 遵守REST和HTTP等易于访问、广泛理解和开发人员友好的标准。
- API不仅仅是几行代码;这些是为移动开发人员等特定受众创建的。
- 这些有清晰的文档和版本,以满足用户的期望。
- 更好的治理和安全性,以及监控以管理性能和可扩展性。
一、核心功能介绍
1.模型相关
对话Chat:支持创建chat,用于发起一次对话。
续写Completions:支持创建completion,用于发起一次续写请求,不支持多轮会话等。
自定义模型:平台支持HuggingFace Transformer架构的自定义大模型导入,将自定义模型发布为服务,并支持通过相关API调用该服务。
图像Images:提供图像相关API能力。
Token计算,根据输入计算token数。
2.模型服务:提供创建服务、获取服务详情等API能力。
3.模型管理:提供获取模型、模型版本详情,获取用户/预置模型及将训练任务发布为模型等API能力。
4.模型调优:提供创建训练任务、任务运行、停止任务运行及获取任务运行详情等API能力。
5.数据管理:提供创建数据集等数据集管理、导入导出数据集任务、数据清洗任务管理等API能力。
6.Prompt工程:提供模板管理、Prompt优化任务、评估等API能力。
7.插件应用:提供知识库、智慧图问、天气等API能力。
二、如何申请千帆大模型API Key和Secret Key
进入百度智能云 千帆大模型平台。
点击应用接入,进入应用列表
点击创建应用
先记录下这个秘钥后面调用需要用到
三、Python调用千帆大模型接口的主要步骤如下
接口文档 地址:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/klqx7b1xf
基本信息
请求地址: `https://aip.baidubce.com/rpc/2.0/ai\_custom/v1/wenxinworkshop/chat/ernie\_speed\`
请求方式: POST
根据不同鉴权方式,查看对应 Header 参数。
- 访问凭证 access\_token 鉴权
<table><tbody><tr><td>名称</td><td>类型</td><td>必填</td><td>描述</td></tr><tr><td>Content-Type</td><td>string</td><td>是</td><td>固定值 application/json</td></tr></tbody></table>
- 基于安全认证 AK/SK 进行签名计算鉴权
<table><tbody><tr><td>名称</td><td>类型</td><td>必填</td><td>描述</td></tr><tr><td>Content-Type</td><td>string</td><td>是</td><td>固定值 application/json</td></tr><tr><td>x-bce-date</td><td>string</td><td>否</td><td>当前时间,遵循 ISO8601 规范,格式如 2016-04-06T08:23:49Z</td></tr><tr><td>Authorization</td><td>string</td><td>是</td><td>用于验证请求合法性的认证信息。更多内容请参考简介 – 相关参考Reference | 百度智能云文档,签名工具可参考IAM签名工具</td></tr></tbody></table>
Query 参数
只有访问凭证 access\_token 鉴权方式,需使用 Query 参数。
- 访问凭证 access\_token 鉴权
<table><tbody><tr><td>名称</td><td>类型</td><td>必填</td><td>描述</td></tr><tr><td>access_token</td><td>string</td><td>是</td><td>通过 API Key 和 Secret Key 获取的 access_token,参考 获取access_token – 千帆大模型平台 | 百度智能云文档</td></tr></tbody></table>
Body 参数
<table><tbody><tr><td>名称</td><td>类型</td><td>必填</td><td>描述</td></tr><tr><td>messages</td><td>List(message)</td><td>是</td><td>聊天上下文信息。 • messages 成员不能为空,1 个成员表示单轮对话,多个成员表示多轮对话 • 最后一个 message 为当前请求的信息,前面的 message 为历史对话信息 • 必须为奇数个成员,成员中 message 的 role 必须依次为 user、assistant • message 中的 content 总长度和 system 字段总内容不能超过 24000 个字符,且不能超过 6144 tokens</td></tr><tr><td>stream</td><td>bool</td><td>否</td><td>是否以流式接口的形式返回数据,默认 false</td></tr><tr><td>temperature</td><td>float</td><td>否</td><td>较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定。默认 0.95,范围 (0, 1.0],不能为 0</td></tr><tr><td>top_p</td><td>float</td><td>否</td><td>影响输出文本的多样性,取值越大,生成文本的多样性越强。默认 0.7,取值范围 [0, 1.0]</td></tr><tr><td>penalty_score</td><td>float</td><td>否</td><td>通过对已生成的 token 增加惩罚,减少重复生成的现象。值越大表示惩罚越大。默认 1.0,取值范围:[1.0, 2.0]</td></tr><tr><td>system</td><td>string</td><td>否</td><td>模型人设,主要用于人设设定。长度限制:message 中的 content 总长度和 system 字段总内容不能超过 24000 个字符,且不能超过 6144 tokens</td></tr><tr><td>stop</td><td>List(string)</td><td>否</td><td>生成停止标识,当模型生成结果以 stop 中某个元素结尾时,停止文本生成。每个元素长度不超过 20 字符,最多 4 个元素</td></tr><tr><td>max_output_tokens</td><td>int</td><td>否</td><td>指定模型最大输出 token 数。如果设置此参数,范围 [2, 2048]。如果不设置此参数,最大输出 token 数为 1024</td></tr><tr><td>frequency_penalty</td><td>float</td><td>否</td><td>正值根据迄今为止文本中的现有频率对新 token 进行惩罚,从而降低模型逐字重复同一行的可能性;默认 0.1,取值范围 [-2.0, 2.0]</td></tr><tr><td>presence_penalty</td><td>float</td><td>否</td><td>正值根据 token 记目前是否出现在文本中来对其进行惩罚,从而增加模型谈论新主题的可能性;默认 0.0,取值范围 [-2.0, 2.0]</td></tr><tr><td>user_id</td><td>string</td><td>否</td><td>表示最终用户的唯一标识符</td></tr></tbody></table>
message 说明
<table><tbody><tr><td>名称</td><td>类型</td><td>描述</td></tr><tr><td>role</td><td>string</td><td>当前支持以下:• user: 表示用户• assistant: 表示对话助手</td></tr><tr><td>content</td><td>string</td><td>对话内容,不能为空</td></tr></tbody></table>
响应说明
部分参数如下。
<table><tbody><tr><td>名称</td><td>描述</td></tr><tr><td>X-Ratelimit-Limit-Requests</td><td>一分钟内允许的最大请求次数</td></tr><tr><td>X-Ratelimit-Limit-Tokens</td><td>一分钟内允许的最大 tokens 消耗,包含输入 tokens 和输出 tokens</td></tr><tr><td>X-Ratelimit-Remaining-Requests</td><td>达到 RPM 速率限制前,剩余可发送的请求数配额,如果配额用完,将会在 0-60s 后刷新</td></tr><tr><td>X-Ratelimit-Remaining-Tokens</td><td>达到 TPM 速率限制前,剩余可消耗的 tokens 数配额,如果配额用完,将会在 0-60s 后刷新</td></tr></tbody></table>
响应体参数
<table><tbody><tr><td>名称</td><td>类型</td><td>描述</td></tr><tr><td>id</td><td>string</td><td>本轮对话的 id</td></tr><tr><td>object</td><td>string</td><td>回包类型• chat.completion:多轮对话返回</td></tr><tr><td>created</td><td>int</td><td>时间戳</td></tr><tr><td>sentence_id</td><td>int</td><td>表示当前子句的序号。只有在流式接口模式下会返回该字段</td></tr><tr><td>is_end</td><td>bool</td><td>表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段</td></tr><tr><td>is_truncated</td><td>bool</td><td>当前生成的结果是否被截断</td></tr><tr><td>result</td><td>string</td><td>对话返回结果</td></tr><tr><td>need_clear_history</td><td>bool</td><td>表示用户输入是否存在安全风险,是否关闭当前会话,清理历史会话信息。• true:是,表示用户输入存在安全风险,建议关闭当前会话,清理历史会话信息。• false:否,表示用户输入无安全风险</td></tr><tr><td>ban_round</td><td>int</td><td>当 need_clear_history 为 true 时,此字段会告知第几轮对话有敏感信息,如果是当前问题,ban_round=-1</td></tr><tr><td>usage</td><td>usage</td><td>token 统计信息</td></tr></tbody></table>
usage 说明
<table><tbody><tr><td>名称</td><td>类型</td><td>描述</td></tr><tr><td>prompt_tokens</td><td>int</td><td>问题 tokens 数</td></tr><tr><td>completion_tokens</td><td>int</td><td>回答 tokens 数</td></tr><tr><td>total_tokens</td><td>int</td><td>tokens 总数</td></tr></tbody></table>
注意 :同步模式和流式模式,响应参数返回不同,详细内容参考示例描述。
- 同步模式下,响应参数为以上字段的完整 json 包。
- 流式模式下,各字段的响应参数为 data: {响应参数}。
代码如下:
1 import requests<br> 2 import json<br> 3 import datetime<br> 4 <br> 5 class QIANFAN:<br> 6 <br> 7 _api_url = "https://aip.baidubce.com"<br> 8 <br> 9 def __init__(self, api_key, secret_key):<br>10 self.API_KEY = api_key<br>11 self.SECRET_KEY = secret_key<br>12 <br>13 url = self._api_url + "/oauth/2.0/token"<br>14 params = {"grant_type": "client_credentials", "client_id": self.API_KEY, "client_secret": self.SECRET_KEY}<br>15 result = self.http_request_v2(url, method="POST", params=params)<br>16 if 'access_token' in result:<br>17 self.access_token = result["access_token"]<br>18 else:<br>19 print(result)<br>20 exit()<br>21 <br>22 <br>23 def chat(self, model="ernie-lite-8k", message=None, **kwargs):<br>24 url = f"{self._api_url}/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/{model}?access_token={self.access_token}"<br>25 <br>26 payload = json.dumps({<br>27 "messages": [{"role": "user", "content": message}],<br>28 "temperature": 0.95,<br>29 "penalty_score": 1<br>30 })<br>31 <br>32 for key, value in kwargs.items():<br>33 payload[key] = value<br>34 <br>35 print(payload)<br>36 response = self.http_request_v2(url, method="POST", params=payload)<br>37 return response<br>38 <br>39 # 生成headers头<br>40 def headers(self, params=None):<br>41 headers = {}<br>42 headers['Content-Type'] = 'application/json'<br>43 return headers<br>44 <br>45 def http_request_v2(self, url, method="GET", headers={}, params=None):<br>46 headers['User-Agent'] = 'Mozilla/5.0 \(Windows NT 6.1; WOW64\) AppleWebKit/537.36 \(KHTML, like Gecko\) Chrome/39.0.2171.71 Safari/537.36'<br>47 if method == "GET":<br>48 response = requests.get(url)<br>49 elif method == "POST":<br>50 # data = bytes(json.dumps(params), 'utf-8')<br>51 response = requests.post(url, data= params)<br>52 elif method == "DELETE":<br>53 response = requests.delete(url, data= data)<br>54 <br>55 result = response.json()<br>56 return result
调用方法如下:
示例<br>API_KEY = "PfHVN4v3GjjE3vV24FzZdGhB"<br>SECRET_KEY = "***chat_client = QIANFAN(API_KEY, SECRET_KEY)<br>print(vars(chat_client))<br><br>result = chat_client.chat(model='ernie_speed', message="1加1为什么等于2?")<br>print(result["result"])<br>
以上就是使用Python语言调用千帆大模型的全部过程和代码示例。
发表评论
登录后可评论,请前往 登录 或 注册