百度千帆大模型平台 SDK

LICENSE Release Notes PyPI version Documentation Status Feedback Issue Feedback Ticket

简介

framwwork

千帆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);

Dataset

千帆 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())

Trainer

千帆 Python SDK 以Pipeline为基础串联整个模型训练的流程,同时允许用户更好的把控训练流程状态 Trainer 框架。 以下是一个快速实现ERNIE-Bot-turbo fine-tuning的例子:

from qianfan.dataset import Dataset
from qianfan.trainer import LLMFinetune

# 加载千帆平台上的数据集,is_download_to_local=False表示不下载数据集到本地,而是直接使用
ds: Dataset = Dataset.load(qianfan_dataset_id=111, is_download_to_local=False)

# 新建trainer LLMFinetune,最少传入train_type和dataset
# 注意fine-tune任务需要指定的数据集类型要求为有标注的非排序对话数据集。
trainer = LLMFinetune(
    train_type="ERNIE-Bot-turbo-0725",
    dataset=ds, 
)

trainer.run()

通用与扩展

Prompt

SDK 支持对文生文、文生图等任务的 Prompt 进行管理、优化、评估等操作,详见Prompt 管理

Client

SDK 内置了一个命令行工具,能够在终端直接与千帆平台进行交互,例如与大模型对话、发起训练任务、预览数据集等等,详见 命令行工具

API Resources

平台API能力汇总,详见平台API能力

其他

Check API References for more details.

联系我们

如使用过程中遇到什么问题,或对SDK功能有建议,可通过如下方式联系我们

License

Apache-2.0