logo
5

千帆SDK LLM 快速入门

本文将围绕以下几个SDK功能点描述如何使用千帆SDK进行基础的大模型能力调用:
  • Chat 对话
  • Completion 续写
  • Embedding 向量化
  • Plugin 插件调用
  • Text2Image 文生图

如何安装

目前千帆 SDK 已发布到 PyPI ,用户可使用 pip 命令进行安装。安装千帆 SDK 需要 3.7.0 或更高的 Python 版本
  
  
  
  
  
  
pip install qianfan -U
在安装完成后,用户即可在代码内引入千帆 SDK 并使用
  
  
  
  
  
  
import qianfan

平台鉴权

千帆SDK基于文心千帆大模型平台对用户提供能力,因此在使用前需要用户使用平台指定的鉴权方式进行初始化。

如何获取AK/SK

用户需要在千帆平台上创建应用,以获得 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
chat_comp=qianfan.ChatCompletion(ak="...", sk="...")

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": "你好"
}])
# 也可以利用内置 Messages 简化多轮对话
# 下面是一个简单的用户对话案例,实现了对话内容的记录
msgs = qianfan.Messages()
while True:
msgs.append(input()) # 增加用户输入
resp = chat_comp.do(messages=msgs)
print(resp) # 打印输出
msgs.append(resp) # 增加模型输出
# 除此之外也支持使用异步编程 以及 流式输出
resp=await chat_comp.ado(model="ERNIE-Bot-turbo", messages=[{
"role": "user",
"content": "你好"
}], stream=True)

Completion 续写

对于不需要对话,仅需要根据 prompt 进行补全的场景来说,用户可以使用qianfan.Completion来完成这一任务。
  
  
  
  
  
  
import qianfan
comp=qianfan.Completion(ak="...", sk="...")
resp=comp.do(model="ERNIE-Bot", prompt="你好")
# 输出:你好!有什么我可以帮助你的吗

Embedding 向量化

千帆 SDK 同样支持调用千帆大模型平台中的模型,将输入文本转化为用浮点数表示的向量形式。转化得到的语义向量可应用于文本检索、信息推荐、知识挖掘等场景。
  
  
  
  
  
  
# Embedding 基础功能
import qianfan
# 替换下列示例中参数,应用API Key替换your_ak,Secret Key替换your_sk
emb = qianfan.Embedding(ak="your_ak", sk="your_sk")
resp = emb.do(texts=[ # 省略 model 时则调用默认模型 Embedding-V1
"世界上最高的山"
])
对于向量化任务,目前千帆大模型平台预置的模型有:

模型配置和接入

以上几种大模型都使用了预置的模型服务,通过model参数来进行设置;除此之外为了支持自行发布的模型服务(例如ChatGLM等开源模型服务部署),千帆SDK当前ChatCompletion,Completion,Embedding,Plugin都支持了endpoint字段;在此基础上,用户可以通过直接传入自行发布模型的endpoint来接入模型服务。以下以plugin为例子进行说明。

Plugin 插件

千帆大模型平台支持使用平台插件并进行编排,以帮助用户快速构建 LLM 应用或将 LLM 应用到自建程序中。在使用这一功能前需要先创建应用、设定服务地址、将服务地址作为参数传入千帆 SDK。
  
  
  
  
  
  
# 以下以使用智慧图问插件为例:
plugin = qianfan.Plugin(endpoint="your_endpoint")
resp = p.do(plugins=["uuid-chatocr"], prompt="这上面的牛是什么颜色的", verbose=True, fileurl="https://qianfan-doc.bj.bcebos.com/imageai/cow.jpeg")

文生图

除了语言类的AIGC能力,我们也基于开源的文生图模型提供了多模态的能力,以下是使用stableDiffusion-XL进行文生图的示例:
  
  
  
  
  
  
import os
os.environ["QIANFAN_AK"]="your_ak"
os.environ["QIANFAN_SK"]="your_sk"
import qianfan
from PIL import Image
import io
t2i = qianfan.Text2Image()
resp = t2i.do(prompt="A Ragdoll cat with a bowtie.", with_decode="base64")
img_data = resp["body"]["data"][0]["image"]
img = Image.open(io.BytesIO(img_data))
display(img)
评论
用户头像