import
dashscope
import
openai
from
chatllm.llmchain.llms
import
ChatGLM
,
ErnieBot
,
SparkBot
from
dashscope
import
Generation
from
dotenv
import
load_dotenv
from
langchain.chains
import
LLMChain
from
langchain.prompts
import
ChatPromptTemplate
配置模型 API Key
我们一共使用 5 个在线大模型 API,分别是:
OpenAI API,详见
https://api.nextweb.fun/
和
https://flowus.cn/yifei/share/7c1ff13b-277d-40da-8c04-ebf770ea46ea
讯飞星火 API,详见
https://console.xfyun.cn/services/cbm
智谱 AI API,详见
https://open.bigmodel.cn/usercenter/apikeys
百度 API,详见
https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application
阿里通义千问 API,详见
https://dashscope.console.aliyun.com/apiKey
你可以在上述网址中注册账号并申请 API Key,大部分模型对于新用户都有一定的免费额度,少部分可能需要预付费。
为了避免将 API Key 暴露在公开的代码中,我们将 API Key 保存在
.env
文件中,然后通过
dotenv
包的
load_dotenv()
方法读取到环境变量中。
在当前目录下新建一个
.env
文件,层级结构如下:
Text Only
.
├── .env
└── call-api.ipynb
.env
文件的内容如下:
Text OnlyOPENAI_API_BASE=https://api.nextweb.fun/openai/v1
OPENAI_API_KEY=ak-XXXXXX
SPARK_API_KEY={APP Id}:{API Key}:{Secret Key}
CHATGLM_API_KEY={API Key}
ERNIE_API_KEY={API Key}:{Secret Key}
DASHSCOPE_API_KEY=sk-XXXXXX
Python# 通过 `dotenv` 包的 `load_dotenv()` 方法读取到环境变量中
load_dotenv()
# 下面的三个变量较为特殊,我们需要手动设置,否则可能会出现错误
openai.api_base = os.environ["OPENAI_API_BASE"]
openai.api_key = os.environ["OPENAI_API_KEY"]
dashscope.api_key = os.environ["DASHSCOPE_API_KEY"]
Text OnlyTrue
设置各个模型的对话机器人实例
Python# 设置默认提示词
prompt = ChatPromptTemplate.from_template("{question}")
# 设置各个模型的对话机器人实例
llm_spark = SparkBot()
llm_zhipuai = ChatGLM()
llm_ernie = ErnieBot()
chat_spark = LLMChain(llm=llm_spark, prompt=prompt)
chat_zhipuai = LLMChain(llm=llm_zhipuai, prompt=prompt)
chat_ernie = LLMChain(llm=llm_ernie, prompt=prompt)
测试对话效果
Pythonprompt = "你是谁?"
OpenAI
Pythonopenai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
).choices[0].message.content
Text Only'我是一个AI助手,没有实体身份。我可以回答一些问题和提供一些建议。'
讯飞星火
Pythonchat_spark.run(prompt)
Text Only'您好,我是科大讯飞研发的认知智能大模型,我的名字叫讯飞星火认知大模型。我可以和人类进行自然交流,解答问题,高效完成各领域认知智能需求。'
智谱 AI
Pythonchat_zhipuai.run(prompt)[1:-1].strip()
Text Only'我是一个名为 ChatGLM2-12B 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。'
Pythonchat_ernie.run(prompt)
Text Only'您好,我是百度研发的知识增强大语言模型,中文名是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。\n\n如果您有任何问题,请随时告诉我。'
阿里通义千问
PythonGeneration.call(model="qwen-turbo", prompt=prompt).output.text
Text Only'我是来自阿里云的大规模语言模型,我叫通义千问。'