• 如何利用langchian调用百度大模型API


    Baidu AI Cloud Qianfan Platform 使用LangChain进行聊天模型集成

    概述

    百度智能云的千帆平台是一个一站式的大模型开发和服务运营平台,为企业开发者提供了包括文心一言(ERNIE-Bot)和第三方开源模型在内的多种模型。主要分为三类模型:

    1. Embedding
    2. Chat
    3. Completion

    本文介绍如何使用LangChain与千帆平台的聊天模型进行集成,具体对应LangChain的langchain/chat_models包。

    API 初始化

    在使用百度千帆平台的大模型服务前,需要初始化相关参数,可以通过环境变量或者直接传参进行初始化:

    export QIANFAN_AK=XXX
    export QIANFAN_SK=XXX
    
    支持的模型
    • ERNIE-Bot-turbo(默认)
    • ERNIE-Bot
    • ERNIE-Speed-128K
    • BLOOMZ-7B
    • Llama-2-7b-chat
    • Llama-2-13b-chat
    • Llama-2-70b-chat
    • Qianfan-BLOOMZ-7B-compressed
    • Qianfan-Chinese-Llama-2-7B
    • ChatGLM2-6B-32K
    • AquilaChat-7B
    基本设置和调用

    使用示例代码初始化并调用聊天模型:

    import os
    from langchain_community.chat_models import QianfanChatEndpoint
    from langchain_core.language_models.chat_models import HumanMessage
    
    os.environ["QIANFAN_AK"] = "Your_api_key"
    os.environ["QIANFAN_SK"] = "Your_secret_Key"
    
    chat = QianfanChatEndpoint(streaming=True)
    messages = [HumanMessage(content="Hello")]
    response = chat.invoke(messages)
    
    print(response.content)
    
    异步调用

    可以使用异步方法进行调用:

    await chat.ainvoke(messages)
    
    批量调用

    支持批量处理消息:

    responses = chat.batch([messages])
    print(responses[0].content)
    
    流式处理

    支持流式处理消息输出:

    try:
        for chunk in chat.stream(messages):
            print(chunk.content, end="", flush=True)
    except TypeError as e:
        print(e)
    
    使用不同模型

    默认使用ERNIE-Bot-turbo,如果需要使用其他模型,可以在初始化时指定:

    chatBot = QianfanChatEndpoint(
        streaming=True,
        model="ERNIE-Bot",
    )
    
    messages = [HumanMessage(content="Hello")]
    response = chatBot.invoke(messages)
    print(response.content)
    
    模型参数

    目前只有ERNIE-Bot和ERNIE-Bot-turbo支持以下参数,可以在调用时指定:

    • temperature
    • top_p
    • penalty_score

    示例代码:

    response = chat.invoke(
        [HumanMessage(content="Hello")],
        **{"top_p": 0.4, "temperature": 0.1, "penalty_score": 1}
    )
    print(response.content)
    
  • 相关阅读:
    华为od德科面试数据算法解析 2022-7-2 相对开音节
    价格监测的目标
    C++之lambda匿名、using、typedef总【全】(二百四十九)
    【2023秋招面经】经纬恒润前端面经总结
    Tomcat报BAD packet signature 18245错误的原因
    MySQL8.0 安装卸载validate_password插件 和 validate_password组件
    关于python内置数据类型的小练习
    使用selenium库模拟浏览器行为,获取网页的cookie值
    (十三)admin-boot项目之redis注解实现接口限流
    TCP如何确保可靠传输(确认应答,重传机制,滑动窗口,流量控制)
  • 原文地址:https://blog.csdn.net/weixin_46933702/article/details/139485538