千帆 SDK 提供大模型工具链最佳实践,让 AI 工作流和 AI 原生应用优雅且便捷地访问千帆大模型平台。SDK 核心能力包含三大部分:大模型推理,大模型训练,以及通用和扩展:
大模型推理
:实现了对一言(ERNIE)系列、开源大模型等模型推理的接口封装,支持对话、补全、Embedding 等。大模型训练
:基于平台能力支持端到端的大模型训练过程,包括训练数据,精调/预训练,以及模型托管等。通用与扩展
:通用能力包括了 Prompt/Debug/Client 等常见的 AI 开发工具。扩展能力则基于千帆特性适配常见的中间层框架。
目前千帆Python SDK 已发布到 PyPI ,用户可使用 pip 命令进行安装,Python需要 3.7.0 或更高的版本。
pip install 'qianfan[dataset_base]'
在安装完成后,用户可以参考 文档 在命令行中快速使用千帆平台功能,或者在代码内引入千帆 SDK 并使用
import qianfan
更多安装选项见文档
其它语言见如下文档:
在使用千帆 SDK 之前,用户需要 百度智能云控制台 - 安全认证 页面获取 Access Key 与 Secret Key,具体流程参见平台 说明文档。在获得了 Access Key 与 Secret Key 后,用户即可开始使用 SDK:
import os
import qianfan
os.environ["QIANFAN_ACCESS_KEY"] = "..."
os.environ["QIANFAN_SECRET_KEY"] = "..."
# 接下来就可以调用 SDK 的所有功能
chat = qianfan.ChatCompletion()
resp = chat.do(messages=[{"role": "user", "content": "你好,千帆"}])
print(resp["result"])
除了通过环境变量设置外,千帆 SDK 还提供了通过 DotEnv 加载 .env
文件和通过代码配置的方式,详细参见 SDK 配置 部分。
(方案二)通过应用接入进行鉴权
这里是一些其他认证方式,请仅在无法获取 Access Key 与 Secret Key 时使用。这些认证方式已经过时,将在未来从 SDK 中移除。
API Key (AK) 和 Secret Key (SK) 是用户在调用千帆模型相关功能时所需要的凭证。具体获取流程参见平台的应用接入使用说明文档,但该认证方式无法使用训练、发布模型等功能,若需使用请使用 Access Key 和 Secret Key 的方式进行认证。在获得并配置了 AK 以及 SK 后,用户即可开始使用 SDK:
import os
import qianfan
os.environ["QIANFAN_AK"] = "..."
os.environ["QIANFAN_SK"] = "..."
# 只可以调用模型推理相关功能
chat = qianfan.ChatCompletion()
resp = chat.do(messages=[{"role": "user", "content": "你好,千帆"}])
print(resp["result"])
适用范围:
功能 | API Key | Access Key |
---|---|---|
Chat 对话 | ✅ | ✅ |
Completion 续写 | ✅ | ✅ |
Embedding 向量化 | ✅ | ✅ |
Plugin 插件调用 | ✅ | ✅ |
文生图 | ✅ | ✅ |
大模型调优 | ❌ | ✅ |
大模型管理 | ❌ | ✅ |
大模型服务 | ❌ | ✅ |
数据集管理 | ❌ | ✅ |
我们提供了数个 cookbook,可以快速了解如何使用 SDK 以及与第三方组件进行交互。
目前千帆 SDK 支持用户使用如下大模型预测能力
- Chat 对话
- Completion 续写
- Embedding 向量化
- Plugin 插件调用
- Text2Image 文生图
- Image2Text 图生文
- Reranker 重排序
如下是使用千帆 SDK 调用 Chat 对话的例子,同时 SDK 还支持异步、流式调用和批量推理,详见 推理服务
import os
import qianfan
# 动态获取最新模型列表依赖 IAM Access Key 进行鉴权,使用应用 AK 鉴权时不支持该功能
os.environ["QIANFAN_ACCESS_KEY"] = "..."
os.environ["QIANFAN_SECRET_KEY"] = "..."
# 模型名称可以通过 qianfan.ChatCompletion.models() 获取
# 也可以在命令行运行 qianfan chat --list-model 查看
chat_comp = qianfan.ChatCompletion(model="ERNIE-3.5-8K")
resp = chat_comp.do(
messages=[{"role": "user", "content": "你好,千帆"}],
# (可选)设置模型参数,与 API 参数一致
top_p=0.8,
temperature=0.9,
penalty_score=1.0,
)
print(resp["result"])
在预置模型无法满足业务场景时,可使用大模型精调和预训练接口,来定制专属大模型。大致流程可分为:准备数据(Dataset) -> 训练(Trainer) -> 模型评估(Evaluation) -> 服务(Service);
用户可以在本地通过千帆 Python SDK 提供的接口,加载平台的数据集并用于后续的训练流程
from qianfan.dataset import Dataset
ds = Dataset.load(qianfan_dataset_id="your_dataset_id")
且千帆 Python SDK 集成了一系列本地的数据处理功能,允许用户在本地对来自多个数据源的数据进行增删改查等操作,详见Dataset 框架。
以下是一个通过加载本地数据集、处理并上传到千帆的例子。所有数据集在本地处理前都必须先通过 load
或 save
方法加载到本地。
假设我们有以下格式的 Json 数据集:
[
{"question": "...", "answer": "..."},
{"question": "...", "answer": "..."},
{"question": "..."}
]
from typing import Dict, Any
from qianfan.dataset import Dataset
# 从本地文件导入
ds = Dataset.load(data_file="path/to/dataset_file.json")
def filter_func(row: Dict[str, Any]) -> bool:
return "answer" in row.keys()
def map_func(row: Dict[str, Any]) -> Dict[str, Any]:
return {
"prompt": row["question"],
"response": row["answer"],
}
# 链式调用处理数据
ds.filter(filter_func).map(map_func).pack()
# 上传到千帆
# 数据集只有上传到千帆后才可以用于训练
# 请确保你的数据集格式符合要求
ds.save(qianfan_dataset_id="your_dataset_id")
千帆 Python SDK 以Pipeline为基础串联整个模型训练的流程,同时允许用户更好的把控训练流程状态 Trainer 框架。 以下是一个快速实现ERNIE-Speed-8K fine-tuning的例子:
from qianfan.dataset import Dataset
from qianfan.trainer import Finetune
# 加载千帆平台上的数据集
ds: Dataset = Dataset.load(qianfan_dataset_id="ds-xxx")
# 新建trainer LLMFinetune,最少传入train_type和dataset
# 注意fine-tune任务需要指定的数据集类型要求为有标注的非排序对话数据集。
trainer = Finetune(
train_type="ERNIE-Speed-8K
dataset=ds,
)
trainer.run()
千帆 Python SDK 对模型管理能力进行了抽象和封装,开发者可以通过Model模块进行模型相关的管理,和批量推理,评估等操作。
以下是一个基于模型实现批量推理的例子:
from qianfan.model import Model
from qianfan.dataset import Dataset
ds = Dataset.load(qianfan_dataset_id="ds-xx")
m = Model(version_id="amv-xx")
m.batch_inference(dataset=ds)
SDK 支持对文生文、文生图等任务的 Prompt 进行管理、优化、评估等操作,详见Prompt 管理
SDK 内置了一个命令行工具,能够在终端直接与千帆平台进行交互,例如与大模型对话、发起训练任务、预览数据集等等,详见 命令行工具
平台API能力汇总,详见平台API能力
Check API References for more details.
如使用过程中遇到什么问题,或对SDK功能有建议,可通过如下方式联系我们
- GitHub issues
- 百度智能云工单 (百度专家即时服务)
- 千帆SDK官方微信群
![](https://private-user-images.githubusercontent.com/56953648/333021096-7307db0d-60d4-4066-a016-cbd5aa84f65a.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQxMDc5NDAsIm5iZiI6MTcyNDEwNzY0MCwicGF0aCI6Ii81Njk1MzY0OC8zMzMwMjEwOTYtNzMwN2RiMGQtNjBkNC00MDY2LWEwMTYtY2JkNWFhODRmNjVhLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE5VDIyNDcyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU4ODJjZjI0OThiOTBlZjMwZTIyODI5NWE4MzMyMzM3Yjc5NjYyY2Q4ZjcwNTk5YjZlZmM5MjU2YmQ4MDA3ODImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.rrXHyQnkinhQ6ZCy0WnJprd4qN9l1WDcO_uSlx-dkcA)
Apache-2.0