当前位置: 首页 > article >正文

大模型框架 LangChain 介绍

文章目录

  • langchain介绍
  • 安装依赖
  • 大模型类别
  • 千帆大模型案例
  • 常见问题

langchain介绍

  • 是一个开源大语言模型框架,本身不提供大模型算法,只提供对接大模型算法平台的接口(模型包裹器);langchain官网v0.2,内部涉及的OpenAI的大模型使用都可以都可以替换为国内的大模型平台;

  • 用于开发大模型应用的框架;

  • 具有五大核心:

    • 模型IO,即模型包裹器,对接各个平台的大语言模型;
    • 数据增强,加载数据文档、转换、嵌入、向量化存储、检索等;
    • 链,将多个组件连接起来,完成特定的操作;
    • Agent代理,核心思想就是LLM选择操作序列,调用其他的API等;
    • indexes 索引快速检索信息;
      在这里插入图片描述
      另外还有回调处理器、记忆等模块。
  • 优点:

    • 允许将大语言模型连接到自己的数据源,如内网中的数据库、pdf等文档;
    • 可以根据提取的信息完成相应的操作;
       
  • 应用场景:

    • 问答系统;
    • 自动问答和客服机器人;
    • 数据处理、管理,如RAG;
       
  • 工作原理
    在这里插入图片描述

    • 用户输入问题,从数据库中进行相似性搜索,找到相关的信息;
    • 找到的信息与问题一同传给大语言模型,得到一个答案;
    • 输出该答案 或者 根据该答案做出动作(接口调用等);
       

安装依赖

pip install -U langchain langchain-community langchain-openai langchain-chroma



# 核心包langchain_core
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
# SystemMessage 用于系统设定
# HumanMessage(content="xxx") # 用户输入的信息
# AIMessage 大模型的输出
# 输出解析器,解析AIMessage
from langchain_core.output_parsers import StrOutputParser, JsonOutputParser

# langchain_community
# 模型包裹器
from langchain_community.chat_models import ChatOpenAI  
from langchain_community.chat_models import QianfanChatEndpoint
# 聊天信息历史
from langchain_community.chat_message_histories import ChatMessageHistory
# 

 

大模型类别

  • 百度千帆大模型,需要注册百度智能云;
    在这里插入图片描述
    在开发千帆大模型应用程序时,需要创建应用以获取ak/sk,并购买调用的服务;调用示例代码
    在这里插入图片描述
    在这里插入图片描述

  • 华为盘古大模型;

  • 阿里通义千问大模型;

  • OpenAI chat-gpt;

 

千帆大模型案例

基于 千帆大模型(文心一言) 创建一个聊天机器人:

import os
from langchain_community.chat_models import QianfanChatEndpoint
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
from langchain_core.output_parsers import StrOutputParser


# 环境变量方式,指定ak/sk
os.environ["QIANFAN_AK"] = "your api key"
os.environ["QIANFAN_SK"] = "your secret key"

# 千帆大模型 (文心一言)
qianfan_chat = QianfanChatEndpoint(
                model="ERNIE-3.5-8K", 
                temperature=0.2, # 越大越随机回答
                timeout=50,  # 有时网络不好,可能会超时,可以指定长些
                # api_key="...",
                # secret_key="...",
                # top_p="...",
                # other params...
            )

# 对象可以直接调用
# res = qianfan_chat.invoke(([HumanMessage(content="讲一个故事")]))

# messages 转为提示词
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个python技术专家,请尽力回答如下问题。"), # message元组或者SystemMessage(content="xx")
    HumanMessage(content="写出一个{lang}的工厂设计模式。") # 占位符
])

# 模型输出的为 AIMessage,需解析为对应的数据格式
parser = StrOutputParser()

# 组装链
chat_chain = prompt | qianfan_chat | parser

# 调用链,并传入占位符
res = chat_chain.invoke({"lang": "python"}) # 链调用,传入占位符的key

# 打印响应 的字符串
print("res:", res)

常见问题

  • urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘aip.baidubce.com’, port=443): Read timed out. (read timeout=30) 接口调用时,网络IO可能较慢,在chat model中延长timeout的时间

 


http://www.kler.cn/a/318274.html

相关文章:

  • Python的Matplotlib
  • 探索 HTML 和 CSS 实现的蜡烛火焰
  • 初级数据结构——栈
  • 微澜:用 OceanBase 搭建基于知识图谱的实时资讯流的应用实践
  • Tomcat 和 Netty 的区别及应用场景分析
  • ubuntu20.04 解决Pytorch默认安装CPU版本的问题
  • Oracle数据库安装与SQL*Plus使用
  • 需求2:新加字段
  • 语言的副作用
  • NPM如何切换淘宝镜像进行加速
  • 什么是前端开发 ?
  • 【优选算法之双指针】No.2--- 经典双指针算法(下)
  • VMware安装ubuntu24.04桌面版
  • Linux下一些命令使用
  • FPGA-Vivado-IP核-虚拟输入输出(VIO)
  • C++【类和对象】(构造函数与析构函数)
  • VSCode好用的插件推荐
  • ARM/Linux嵌入式面经(三七):CVTE
  • 【计算机网络】传输层协议UDP
  • linux 进程间通信之pthread(条件变量共享和互斥锁共享)
  • AIGC基础工具-科学计算和数据处理的重要库NumPy(Numerical Python)简介
  • hbase merge工具
  • 【C++】list容器的基本使用
  • 项目小总结
  • 后台管理系统开箱即用的组件库!!【送源码】
  • 在视频上绘制区域:使用Vue和JavaScript实现交互式画布