当前位置:   article > 正文

直观易用的大模型开发框架LangChain,你会了没?_langchain 大模型

langchain 大模型

目录

  • 简介

  • 基本组件

  • 小试牛刀

  • 关于沟通

  • 代码案例:调用Embedding、Completion、Chat Model

  • 总结

目前LangChain框架在集团大模型接入手册中的学习案例有限,为了让大家可以快速系统地了解LangChain大模型框架并开发,产出此文章。本文章包含了LangChain的简介、基本组件和可跑的代码案例(包含Embedding、Completion、Chat三种功能模型声明)。

01

简介

在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!

LangChain 作为一个大语言模型(LLM)集成框架,旨在简化使用大语言模型的开发过程,包括如下组件:

LangChain框架优点:

1.多模型支持: LangChain 支持多种流行的预训练语言模型,如 OpenAI GPT-3、Hugging Face Transformers 等,为用户提供了广泛的选择。

2.易于集成: LangChain 提供了简单直观的API,可以轻松集成到现有的项目和工作流中,无需深入了解底层模型细节。

3.强大的工具和组件: LangChain 内置了多种工具和组件,如文档加载器、文本转换器、提示词模板等,帮助开发者处理复杂的语言任务。

4.可扩展性: LangChain 允许开发者通过自定义工具和组件来扩展框架的功能,以适应特定的应用需求。

5.性能优化: LangChain 考虑了性能优化,支持高效地处理大量数据和请求,适合构建高性能的语言处理应用。

6.Python 和 Node.js 支持: 开发者可以使用这两种流行的编程语言来构建和部署LangChain应用程序。

由于支持 Node.js ,前端大佬们可使用Javascript语言编程从而快速利用大模型能力,无需了解底层大模型细节。同时也支持JAVA开发,后端大佬同样适用。

本篇文章案例聚焦Python语言开发。

02

基本组件

理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。

  • Prompt【可选】

  • 告知LLM内system服从什么角色

  • 占位符:设置{input}以便动态填补后续用户输入

  • Retriever【可选】

  • LangChain一大常见应用场景就是RAG(Retrieval-Augmented Generation),RAG 为了解决LLM中语料的通用和时间问题,通过增加最新的或者垂类场景下的外部语料,Embedding化后存入向量数据库,然后模型从外部语料中寻找相似语料辅助回复

  • Models

  • 可做 Embedding化,语句补全,对话等

支持的模型选择,OpenAI为例

  • Parser【可选】

  • StringParser,JsonParser 等

  • 将模型输出的AIMessage转化为string, json等易读格式

上述介绍了Langchain开发中常见的components,接下来将通过一简单案例将上述组件串起来,让大家更熟悉Langchain中的组件及接口调用。

03

小试牛刀

理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。

import os``# gpt 网关调用``os.environ["OPENAI_API_KEY"] = "{申请的集团api key}"``os.environ["OPENAI_API_BASE"] = "{您的url}"``   ``import openai``   ``from dotenv import load_dotenv, find_dotenv``_ = load_dotenv(find_dotenv())``   ``openai.api_key = os.environ['OPENAI_API_KEY']``   ``from langchain.prompts import ChatPromptTemplate``from langchain.chat_models import ChatOpenAI``from langchain.schema.output_parser import StrOutputParser``   ``prompt = ChatPromptTemplate.from_template(`    `"tell me a short joke about {topic}"``)``model = ChatOpenAI()``output_parser = StrOutputParser()``   ``chain = prompt | model | output_parser``   ``chain.invoke({"topic": "bears"})
  • 1

输出:

"Why don't bears wear shoes?\nBecause they have bear feet!"
  • 1

其中 chain = prompt | model | output_parser 按照数据传输顺序将上述声明的 prompt template、大语言模型、输出格式串联起来(Chain),逻辑清晰直接。

代码案例:调用Embedding、Completion、Chat Model

  • 将文本转化为Embedding :langchain_community.embeddings <-> OpenAIEmbeddings
from langchain_community.embeddings import OpenAIEmbeddings``   ``embeddings = OpenAIEmbeddings(`    `model="text-embedding-ada-002",`    `openai_api_key=os.environ["OPENAI_API_KEY"],`    `openai_api_base=os.environ["OPENAI_API_BASE"]``)``   ``text = "text"``query_result = embeddings.embed_query(text)
  • 1
  • 文本补全:langchain_community.llms <-> OpenAI completion

    from langchain_community.llms import OpenAI``   ``llm = OpenAI(`    `model_name='gpt-35-turbo-instruct-0914',`    `openai_api_key=os.environ["OPENAI_API_KEY"],`    `base_url=base_url,`    `temperature=0``)``   ``llm.invoke("I have an order with order number 2022ABCDE, but I haven't received it yet. Could you please help me check it?")
    
    • 1

对话模型:langchain_openai <-> ChatOpenAI

from langchain_openai import ChatOpenAI``   ``model = ChatOpenAI(model_name="gpt-35-turbo-1106") # "glm-4"``model.invoke("你好,你是智谱吗?")
  • 1

04

总结

理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。

LangChain作为一个使用流程直观的大模型开发框架,掌握它优势多多。希望您可以通过上述内容入门并熟悉LangChain框架,欢迎多多交流!

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/910197

推荐阅读
相关标签