目前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框架,歡迎多多交流!