前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >langchain qianfan 使用

langchain qianfan 使用

原创
作者头像
用户4080233
修改2024-07-05 13:03:59
220
修改2024-07-05 13:03:59

前言

注:langchain-wenxin (https://github.com/ninehills/langchain-wenxin)这个项⽬不再维护,因为langchain 已经⽀持了。

langchain 官⽹:https://python.langchain.com/docs/integrations/chat/baidu_qianfan_endpoint

代码语言:javascript
复制
pip3 install langchain
pip3 install qianfan
在qianfan⼤模型平台上创建应⽤后会看到api key, securet key
https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application

Chat 对话

1) 使⽤默认模型

代码语言:javascript
复制
import qianfan 
chat_comp = qianfan.ChatCompletion(ak="***", sk="***") 
# 调⽤默认模型,即 ERNIE-Bot-turbo 
resp = chat_comp.do(messages=[{ 
    "role": "user", 
    "content": "你好" 
}]) 
print(resp['body']['result']) 
你好,有什么我可以帮助你的吗? 

2)使用指定模型

代码语言:javascript
复制
resp = chat_comp.do(model="ERNIE-Bot", messages=[{
     "role": "user",
     "content": "你好"
}])
你好!有什么我可以帮助你的吗?请随时告诉我你的问题和需求,我会尽⼒为你提供帮助。

3)指定自行发布的模型

代码语言:javascript
复制
# 指定⾃⾏发布的模型 
resp = chat_comp.do(endpoint="your_custom_endpoint", messages=[{ 
    "role": "user", 
    "content": "你好"
}])

4)内置多轮对话

可以利用内置 Messages 简化多轮对话。下面是⼀个简单的⽤户对话案例,实现了对话内容的记录。

代码语言:javascript
复制
msgs = qianfan.Messages() 
while True: 
    msgs.append(input()) # 增加⽤户输⼊ 
    resp = chat_comp.do(messages=msgs) 
    print(resp['body']['result']) # 打印输出 
    msgs.append(resp) # 增加模型输出 

Completion 续写

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

代码语言:javascript
复制
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 同样⽀持调⽤千帆⼤模型平台中的模型,将输⼊⽂本转化为⽤浮点数表示的向量形式。转化得到的语义向量可应⽤于⽂本检索、信息推荐、知识挖掘等场景。

代码语言:javascript
复制
# 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=[
    "世界上最⾼的⼭"
])

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

  • Embedding-V1(默认)
  • bge-large-en
  • bge-large-zh

Plugin 插件调⽤

后续是否改成appBuilder,不再使⽤插件?

千帆⼤模型平台⽀持使⽤平台插件并进⾏编排,以帮助⽤户快速构建 LLM 应⽤或将 LLM 应⽤到⾃建程序中。在使⽤这⼀功能前需要先创建应⽤、设定服务地址、将服务地址作为参数传⼊千帆 SDK。

代码语言:javascript
复制
# 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) 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Chat 对话
  • Completion 续写
  • Embedding 向量化
  • Plugin 插件调⽤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档