5
千帆SDK LLM 快速入门
大模型开发/技术交流
- LLM
- 社区上线
- 开源大模型
2023.11.088279看过
本文将围绕以下几个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 osos.environ["QIANFAN_AK"]="..."os.environ["QIANFAN_SK"]="..."# 或者构造时传递(仅作用于该对象,优先级最高)import qianfanchat_comp=qianfan.ChatCompletion(ak="...", sk="...")
Chat 对话
用户只需要提供预期使用的模型名称和对话内容,即可调用千帆大模型平台支持的,包括 ERNIE-Bot 在内的所有预置模型,如下所示:
import qianfanchat_comp = qianfan.ChatCompletion(ak="...", sk="...")# 调用默认模型,即 ERNIE-Bot-turboresp = 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 qianfancomp=qianfan.Completion(ak="...", sk="...")resp=comp.do(model="ERNIE-Bot", prompt="你好")# 输出:你好!有什么我可以帮助你的吗
Embedding 向量化
千帆 SDK 同样支持调用千帆大模型平台中的模型,将输入文本转化为用浮点数表示的向量形式。转化得到的语义向量可应用于文本检索、信息推荐、知识挖掘等场景。
# Embedding 基础功能import qianfan# 替换下列示例中参数,应用API Key替换your_ak,Secret Key替换your_skemb = qianfan.Embedding(ak="your_ak", sk="your_sk")resp = emb.do(texts=[ # 省略 model 时则调用默认模型 Embedding-V1"世界上最高的山"])
对于向量化任务,目前千帆大模型平台预置的模型有:
-
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 osos.environ["QIANFAN_AK"]="your_ak"os.environ["QIANFAN_SK"]="your_sk"import qianfanfrom PIL import Imageimport iot2i = 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)
评论![用户头像](https://bce.bdstatic.com/wenxin-community/images/topic/avatar_default.png)
![用户头像](https://bce.bdstatic.com/wenxin-community/images/topic/avatar_default.png)