目前LangChain框架在集团大模型接入手册中的学习案例有限,为了让大家可以快速系统地了解LangChain大模型框架并开发,产出此文章。本文章包含了LangChain的简介、基本组件和可跑的代码案例(包含Embedding、Completion、Chat三种功能模型声明)。读完此文章,您可利用集团申请的api key+LangChain框架进行快速开发,体验大语言模型的魅力。
一、简介
LangChain 作为一个大语言模型(LLM)集成框架,旨在简化使用大语言模型的开发过程,包括如下组件:
LangChain框架优点:
由于支持 Node.js ,前端大佬们可使用Javascript语言编程从而快速利用大模型能力,无需了解底层大模型细节。同时也支持JAVA开发,后端大佬同样适用。
本篇文章案例聚焦Python语言开发。
二、基本组件
支持的模型选择,OpenAI为例
上述介绍了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 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"})
输出:
"Why don't bears wear shoes?\nBecause they have bear feet!"
其中 chain = prompt | model | output_parser 按照数据传输顺序将上述声明的 prompt template、大语言模型、输出格式串联起来(Chain),逻辑清晰直接。
代码案例:调用Embedding、Completion、Chat Model
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)
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?")
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model_name="gpt-35-turbo-1106") # "glm-4"
model.invoke("你好,你是智谱吗?")
四、总结
LangChain作为一个使用流程直观的大模型开发框架,掌握它优势多多。希望您可以通过上述内容入门并熟悉LangChain框架,欢迎多多交流!