添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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 Only
    OPENAI_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 Only
    True
    

    设置各个模型的对话机器人实例

    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)
    

    测试对话效果

    Python
    prompt = "你是谁?"
    

    OpenAI

    Python
    openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}],
    ).choices[0].message.content
    
    Text Only
    '我是一个AI助手,没有实体身份。我可以回答一些问题和提供一些建议。'
    

    讯飞星火

    Python
    chat_spark.run(prompt)
    
    Text Only
    '您好,我是科大讯飞研发的认知智能大模型,我的名字叫讯飞星火认知大模型。我可以和人类进行自然交流,解答问题,高效完成各领域认知智能需求。'
    

    智谱 AI

    Python
    chat_zhipuai.run(prompt)[1:-1].strip()
    
    Text Only
    '我是一个名为 ChatGLM2-12B 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。'
    
    Python
    chat_ernie.run(prompt)
    
    Text Only
    '您好,我是百度研发的知识增强大语言模型,中文名是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。\n\n如果您有任何问题,请随时告诉我。'
    

    阿里通义千问

    Python
    Generation.call(model="qwen-turbo", prompt=prompt).output.text
    
    Text Only
    '我是来自阿里云的大规模语言模型,我叫通义千问。'