千帆SDK提供大模型工具链最佳实践,让AI工作流和AI原生应用优雅且便捷地访问千帆大模型平台。SDK核心能力包含三大部分:大模型推理,大模型训练,以及通用和扩展:
大模型推理
:实现了对一言(ERNIE-Bot)系列、开源大模型等模型推理的接口封装,支持对话、补全、Embedding等。大模型训练
:基于平台能力支持端到端的大模型训练过程,包括训练数据,精调/预训练,以及模型服务等。通用与扩展
:通用能力包括了Prompt/Debug/Client等常见的AI开发工具。扩展能力则基于千帆特性适配常见的中间层框架。
目前千帆Python SDK 已发布到 PyPI ,用户可使用 pip 命令进行安装,Python需要 3.7.0 或更高的版本。其他语言的SDK敬请期待。
pip install qianfan
在安装完成后,用户可以参考 文档 在命令行中快速使用千帆平台功能,或者在代码内引入千帆 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"]="..."
chat_comp = qianfan.ChatCompletion(model="ERNIE-Bot")
resp = chat_comp.do(messages=[{
"role": "user",
"content": "你好,千帆"
}], top_p=0.8, temperature=0.9, penalty_score=1.0)
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_comp = qianfan.ChatCompletion(model="ERNIE-Bot")
resp = chat_comp.do(messages=[{
"role": "user",
"content": "你好,千帆"
}], top_p=0.8, temperature=0.9, penalty_score=1.0)
print(resp["result"])
适用范围:
功能 | API Key | Access Key |
---|---|---|
Chat 对话 | ✅ | ✅ |
Completion 续写 | ✅ | ✅ |
Embedding 向量化 | ✅ | ✅ |
Plugin 插件调用 | ✅ | ✅ |
文生图 | ✅ | ✅ |
大模型调优 | ❌ | ✅ |
大模型管理 | ❌ | ✅ |
大模型服务 | ❌ | ✅ |
数据集管理 | ❌ | ✅ |
我们提供了数个 cookbook,可以快速了解如何使用 SDK 以及与第三方组件进行交互。
目前千帆 SDK 支持用户使用如下大模型预测能力,详见推理服务
- Chat 对话
- Completion 续写
- Embedding 向量化
- Plugin 插件调用
- Text2Image 文生图
在预置模型无法满足业务场景时,可使用大模型精调和预训练接口,来定制专属大模型。大致流程可分为:准备数据(Dataset) -> 训练(Trainer) -> 模型评估(Evaluation) -> 服务(Service);
千帆 Python SDK 集成了一系列本地的数据处理功能,允许用户在本地对来自多个数据源的数据进行增删改查等操作,详见Dataset 框架。 以下是一个通过加载本地数据集并进行数据处理的例子
from qianfan.dataset import Dataset
# 从本地文件导入
ds = Dataset.load(data_file="path/to/dataset_file.jsonl")
def filter_func(row: Dict[str, Any]) -> bool:
return "sensitive data for example" not in row["col1"]
def map_func(row: Dict[str, Any]) -> Dict[str, Any]:
return {
"col1": row["col1"].replace("sensitive data for example", ""),
"col2": row["col2"]
}
print(ds.filter(filter_func).map(map_func).list())
千帆 Python SDK 以Pipeline为基础串联整个模型训练的流程,同时允许用户更好的把控训练流程状态 Trainer 框架。 以下是一个快速实现ERNIE-Bot-turbo fine-tuning的例子:
from qianfan.dataset import Dataset
from qianfan.trainer import LLMFinetune
# 加载千帆平台上的数据集
ds: Dataset = Dataset.load(qianfan_dataset_id="ds-xxx")
# 新建trainer LLMFinetune,最少传入train_type和dataset
# 注意fine-tune任务需要指定的数据集类型要求为有标注的非排序对话数据集。
trainer = LLMFinetune(
train_type="ERNIE-Bot-turbo-0725",
dataset=ds,
)
trainer.run()
SDK 支持对文生文、文生图等任务的 Prompt 进行管理、优化、评估等操作,详见Prompt 管理
SDK 内置了一个命令行工具,能够在终端直接与千帆平台进行交互,例如与大模型对话、发起训练任务、预览数据集等等,详见 命令行工具
平台API能力汇总,详见平台API能力
Check API References for more details.
如使用过程中遇到什么问题,或对SDK功能有建议,可通过如下方式联系我们
- GitHub issues
- 百度智能云工单 (百度专家即时服务)
- 千帆SDK官方微信群
![](https://private-user-images.githubusercontent.com/37836090/297053346-50f38a78-31cb-4b0d-a03e-0bb1d4f367b3.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM2ODMxMjYsIm5iZiI6MTcyMzY4MjgyNiwicGF0aCI6Ii8zNzgzNjA5MC8yOTcwNTMzNDYtNTBmMzhhNzgtMzFjYi00YjBkLWEwM2UtMGJiMWQ0ZjM2N2IzLmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgxNVQwMDQ3MDZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02MDZlMGUwNzI3NzU5OTJkMjgxOGY1YmYzZDFlNzIxZTBmMmQxNmRkNzk2NDQ5MjIwNGU5MzgzMjY3MGFiZGIwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.rSbdtQHclRvW7A5lxpgWpyQwsrvl4W-eGY0OP-MebhY)
Apache-2.0