直觀易用的大模型開發框架LangChain,你會了沒?

目前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語言開發。




二、基本組件



Chain中常見的components
 

 



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 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

將文本轉化爲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框架,歡迎多多交流!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章