logo
话题头图

【千帆SDK】千帆 OpenAI 适配器

💡学习前小提示
请大家点击链接并加🌟:https://github.com/baidubce/bce-qianfan-sdk

千帆 OpenAI 适配器

对于已经适配 OpenAI 而尚未支持千帆 SDK 的用户,本文提供了一种方法,支持用户0成本从OpenAI迁移到百度文心千帆大模型平台。
整体流程包含:
  1. 在本地使用 qianfan 启动千帆OpenAI适配器
  2. 编写 OpenAI规范 接口代码,通过调用本地千帆OpenAI适配器,请求千帆大模型平台。

启动千帆 OpenAI 适配器

  
  
# import nest_asyncio
import os
import subprocess as sp
# 该环境变量用于绕过 OpenAI 对 OpenAI API Key 的检查
os.environ["OPENAI_API_KEY"] = "FAKE_KEY"
# 需要将 OPENAI 的 API 请求重定向到本地的服务
os.environ["OPENAI_BASE_URL"] = "http://127.0.0.1:8001/v1" # 修改为本地 OpenAI API 地址
# 以下环境变量供千帆 OpenAI Adapter:
# 使用安全认证的access_key/secret_key:
os.environ["QIANFAN_ACCESS_KEY"] = "your_access_key"
os.environ["QIANFAN_SECRET_KEY"] = "your_secret_key"
# 或者应用ak/sk
# os.environ["QIANFAN_AK"]="your_app_ak"
# os.environ["QIANFAN_SK"]="your_app_sk"
# 启动千帆 SDK 的 OpenAI Adapter 服务,用于代理转发指向 OpenAI 的请求,并替换为千帆服务的返回
server = sp.Popen("qianfan openai -p 8001", shell=True)
# 也可以在终端直接执行qianfan openai -p 8001
  
  
INFO: `--no-ignore-system` is not set. System messages will be ignored by
default since most system messages for openai is not suitable for ERNIE model.
OpenAI wrapper server is running at
• http://127.0.0.1:8001
• http://172.18.167.145:8001
Remember to set the environment variables:
export OPENAI_API_KEY='any-content-you-want'
export OPENAI_BASE_URL='http://172.18.167.145:8001/v1'
INFO: Started server process [40058]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8001 (Press CTRL+C to quit)

调用ERNIE文心大模型

  
  
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="ERNIE-3.5-8K",
messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': '如何做炒西红柿鸡蛋?'}]
)
print(completion.choices[0].message)
  
  
[INFO][2024-06-25 14:47:30.943] oauth.py:228 [t:8344509248]: trying to refresh access_token for ak `rRlk1M***`
[INFO][2024-06-25 14:47:31.137] oauth.py:243 [t:8344509248]: sucessfully refresh access_token
INFO: 127.0.0.1:55075 - "POST /v1/chat/completions HTTP/1.1" 200 OK
ChatCompletionMessage(content='炒西红柿鸡蛋是一道家常菜,口感鲜美,营养丰富。以下是制作炒西红柿鸡蛋的基本步骤:\n\n所需材料:\n- 西红柿 2-3个\n- 鸡蛋 3-4个\n- 葱 1根\n- 蒜 2-3瓣\n- 盐 适量\n- 白糖 少许(可选)\n- 生抽 少许(可选)\n- 食用油 适量\n\n步骤:\n\n1. **准备材料**:\n - 将西红柿洗净,切成小块。\n - 鸡蛋打入碗中,加少许盐,搅拌均匀。\n - 葱、蒜切碎备用。\n\n2. **炒鸡蛋**:\n - 热锅凉油,待油温微热时,倒入搅拌好的鸡蛋液。\n - 用筷子或铲子轻轻搅拌,使鸡蛋液形成蛋花状,待鸡蛋基本凝固后,盛出备用。\n\n3. **炒西红柿**:\n - 锅中再倒入适量食用油,烧热后放入葱、蒜碎爆香。\n - 加入切好的西红柿块,翻炒至西红柿稍微变软出汁。\n\n4. **调味**:\n - 根据个人口味,加入适量盐、少许白糖(提鲜)和少许生抽(增色)。\n - 翻炒均匀,使西红柿充分吸收调味料。\n\n5. **合炒**:\n - 将之前炒好的鸡蛋倒入锅中,与西红柿一起翻炒均匀。\n - 确保鸡蛋和西红柿充分混合,让鸡蛋吸收西红柿的汤汁。\n\n6. **出锅**:\n - 翻炒均匀后,即可关火出锅。\n - 可以撒上一些葱花作为装饰和提香。\n\n注意事项:\n- 炒鸡蛋时油温不宜过高,以免鸡蛋炒糊。\n- 西红柿炒至稍微变软出汁即可,不要炒得过烂。\n- 调味时可根据个人口味调整盐和糖的用量。\n\n这样一道色香味俱佳的炒西红柿鸡蛋就做好了,希望您会喜欢!', role='assistant', function_call=None, tool_calls=None)

常用模型清单

ERNIE-3.5-8K
ERNIE-4.0-8K
ERNIE-Speed-8K
  
  
from qianfan import ChatCompletion
ChatCompletion().models()
  
  
{'AquilaChat-7B',
'BLOOMZ-7B',
'ChatGLM2-6B-32K',
'ChatLaw',
'EB-turbo-AppBuilder',
'ERNIE 3.5',
'ERNIE Speed',
'ERNIE Speed-AppBuilder',
'ERNIE-3.5-128K',
'ERNIE-3.5-128K(预览版)',
'ERNIE-3.5-8K',
'ERNIE-3.5-8K-0205',
'ERNIE-3.5-8K-0329',
'ERNIE-3.5-8K-0613',
'ERNIE-3.5-8K-Preview',
'ERNIE-3.5-8K-preview',
'ERNIE-3.5-preview',
'ERNIE-4.0-8K',
'ERNIE-4.0-8K-0104',
'ERNIE-4.0-8K-0329',
'ERNIE-4.0-8K-0613',
'ERNIE-4.0-8K-Latest',
'ERNIE-4.0-8K-Preview',
'ERNIE-4.0-8K-Preview-0518',
'ERNIE-4.0-8K-preview',
'ERNIE-4.0-preview',
'ERNIE-Bot',
'ERNIE-Bot-4',
'ERNIE-Bot-turbo',
'ERNIE-Bot-turbo-AI',
'ERNIE-Character-8K',
'ERNIE-Character-Fiction-8K',
'ERNIE-Function-8K',
'ERNIE-Functions-8K',
'ERNIE-Lite-8K',
'ERNIE-Lite-8K-0308',
'ERNIE-Lite-8K-0922',
'ERNIE-Lite-8K-0922(原ERNIE-Bot-turbo-0922)',
'ERNIE-Speed',
'ERNIE-Speed-128K',
'ERNIE-Speed-8K',
'ERNIE-Tiny-8K',
'Gemma-7B-It',
'Gemma-7B-it',
'Llama-2-13B-Chat',
'Llama-2-70B-Chat',
'Llama-2-7B-Chat',
'Meta-Llama-3-70B',
'Meta-Llama-3-8B',
'Mixtral-8x7B-Instruct',
'Qianfan-BLOOMZ-7B-compressed',
'Qianfan-Chinese-Llama-2-13B',
'Qianfan-Chinese-Llama-2-70B',
'Qianfan-Chinese-Llama-2-7B',
'XuanYuan-70B-Chat-4bit',
'Yi-34B-Chat'}
评论
用户头像