Skip to main content

文心千帆大模型平台 Python SDK

Project description

千帆大模型平台 Python SDK

针对百度智能云千帆大模型平台,我们推出了一套 Python SDK(下称千帆 SDK),方便用户通过代码接入并调用千帆大模型平台的能力。

如何安装

目前千帆 SDK 已发布到 PyPI ,用户可使用 pip 命令进行安装。安装千帆 SDK 需要 3.7.0 或更高的 Python 版本

pip install qianfan

在安装完成后,用户即可在代码内引入千帆 SDK 并使用

import qianfan

快速使用

在使用千帆 SDK 之前,用户需要在千帆平台上创建应用,以获得 API Key (AK) 和 Secret Key (SK)。AK 与 SK 是用户在调用千帆 SDK 时所需要的凭证。具体获取流程参见平台的应用接入使用说明文档

获取到 AK 和 SK 后,用户还需要传递它们来初始化千帆 SDK。 千帆 SDK 支持如下三种传递方式,按优先级从低到高排序:

# 通过环境变量传递(作用于全局,优先级最低)
import os
os.environ["QIANFAN_AK"]="..."
os.environ["QIANFAN_SK"]="..."

# 或者通过内置函数传递(作用于全局,优先级大于环境变量)
import qianfan
qianfan.AK("...")
qianfan.SK("...")

# 或者构造时传递(仅作用于该对象,优先级最高)
import qianfan
chat_comp = qianfan.ChatCompletion(ak="...", sk="...")

功能

目前千帆 SDK 支持用户使用如下功能

  • Chat 对话
  • Completion 续写
  • Embedding 向量化
  • Plugin 插件调用

Chat 对话

用户只需要提供预期使用的模型名称和对话内容,即可调用千帆大模型平台支持的,包括 ERNIE-Bot 在内的所有预置模型,如下所示:

import qianfan
chat_comp = qianfan.ChatCompletion(ak="...", sk="...")

# 调用默认模型,即 ERNIE-Bot-turbo
resp = chat_comp.do(messages=[{
    "role": "user",
    "content": "你好"
}])

print(resp['body']['result'])
# 输入:你好
# 输出:你好!有什么我可以帮助你的吗?

# 指定特定模型
resp = chat_comp.do(model="ERNIE-Bot", messages=[{
    "role": "user",
    "content": "你好"
}])

# 指定自行发布的模型
resp = chat_comp.do(endpoint="your_custom_endpoint", messages=[{
    "role": "user",
    "content": "你好"
}])

# 也可以利用内置 Messages 简化多轮对话
# 下面是一个简单的用户对话案例,实现了对话内容的记录
msgs = qianfan.Messages()
while True:
    msgs.append(input())         # 增加用户输入
    resp = chat_comp.do(messages=msgs)
    print(resp)									 # 打印输出
    msgs.append(resp)            # 增加模型输出

目前,千帆大模型平台提供了一系列可供用户通过 SDK 直接使用的模型,模型清单如下所示:

对于那些不在清单中的其他模型,用户可通过传入 endpoint 来使用它们。

除了通过 do 方法同步调用千帆 SDK 以外, SDK 还支持使用 ado 来异步调用千帆 SDK。在同步和异步的基础上,用户还可以传入 stream=True 来实现大模型输出结果的流式返回。示例代码如下所示:

# 异步调用
resp = await chat_comp.ado(model="ERNIE-Bot-turbo", messages=[{
    "role": "user",
    "content": "你好"
}])
print(resp['body']['result'])

# 异步流式调用
resp = await chat_comp.ado(model="ERNIE-Bot-turbo", messages=[{
    "role": "user",
    "content": "你好"
}], stream=True)

async for r in resp:
    print(r['result'])

Completion 续写

对于不需要对话,仅需要根据 prompt 进行补全的场景来说,用户可以使用 qianfan.Completion 来完成这一任务。

import qianfan
comp = qianfan.Completion(ak="...", sk="...")

resp = comp.do(model="ERNIE-Bot", prompt="你好")
# 输出:你好!有什么我可以帮助你的吗?

# 续写功能同样支持流式调用
resp = comp.do(model="ERNIE-Bot", prompt="你好", stream=True)
for r in resp:
    print(r['result'])

# 异步调用
resp = await comp.ado(model="ERNIE-Bot-turbo", prompt="你好")
print(resp['body']['result'])

# 异步流式调用
resp = await comp.ado(model="ERNIE-Bot-turbo", prompt="你好", stream=True)
async for r in resp:
    print(r['result'])

# 调用非平台内置的模型
resp = comp.do(endpoint="your_custom_endpoint", prompt="你好")

Embedding 向量化

千帆 SDK 同样支持调用千帆大模型平台中的模型,将输入文本转化为用浮点数表示的向量形式。转化得到的语义向量可应用于文本检索、信息推荐、知识挖掘等场景。

# Embedding 基础功能
import qianfan
emb = qianfan.Embedding(ak="...", sk="...")

resp = emb.do(model="Embedding-V1", texts=["世界上最高的山"])
print(resp['data'][0]['embedding'])
# 输出:0.062249645590782166, 0.05107472464442253, 0.033479999750852585, ...]

# 异步调用
resp = await emb.ado(texts=[
    "世界上最高的山"
])
print(resp['data'][0]['embedding'])

# 使用非预置模型
resp = emb.do(endpoint="your_custom_endpoint", texts=[
    "世界上最高的山"
])

对于向量化任务,目前千帆大模型平台预置的模型有:

Plugin 插件

千帆大模型平台支持使用平台插件并进行编排,以帮助用户快速构建 LLM 应用或将 LLM 应用到自建程序中。在使用这一功能前需要先创建应用、设定服务地址、将服务地址作为参数传入千帆 SDK

# Plugin 基础功能展示
plugin = qianfan.Plugin()
resp = plugin.do(endpoint="your_custom_endpoint", prompt="你好")
print(resp['result'])

# 流式调用
resp = plugin.do(endpoint="your_custom_endpoint", prompt="你好", stream=True)

# 异步调用
resp = await plugin.ado(endpoint="your_custom_endpoint", prompt="你好")
print(resp['result'])

# 异步流式调用
resp = await plugin.ado(endpoint="your_custom_endpoint", prompt="你好", stream=True)
async for r in resp:
    print(r)

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

qianfan-0.0.5-py3-none-any.whl (35.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page