写点什么

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

  • 2024-04-11
    北京
  • 本文字数:1912 字

    阅读完需:约 6 分钟

目前 LangChain 框架在集团大模型接入手册中的学习案例有限,为了让大家可以快速系统地了解 LangChain 大模型框架并开发,产出此文章。本文章包含了 LangChain 的简介、基本组件和可跑的代码案例(包含 Embedding、Completion、Chat 三种功能模型声明)。读完此文章,您可利用集团申请的 api key+LangChain 框架进行快速开发,体验大语言模型的魅力。

一、简介

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 语言开发。



二、基本组件


•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 中的组件及接口调用。



三、小试牛刀

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 ChatPromptTemplatefrom langchain.chat_models import ChatOpenAIfrom 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"})
复制代码


输出:


"Why don't bears wear shoes?\nBecause they have bear feet!"
复制代码


其中 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)
复制代码


•文本补全: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?")
复制代码


•对话模型:langchain_openai <-> ChatOpenAI


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



四、总结

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

发布于: 刚刚阅读数: 5
用户头像

拥抱技术,与开发者携手创造未来! 2018-11-20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东云开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
直观易用的大模型开发框架LangChain,你会了没?_京东科技开发者_InfoQ写作社区