博客 / 詳情

返回

Langchain 快速入門(一)

簡介

langchain專門用於構建LLM大語言模型,其中提供了大量的prompt模板,和組件,通過chain(鏈)的方式將流程連接起來,操作簡單,開發便捷。

環境配置

安裝langchain框架

pip install langchain langchain-community

其中langchain可以提供了各種大模型語言庫選擇,(這裏只列舉幾個)例如:

#chatgpt
pip install langchain-openai
#hugging face
pip install langchain-huggingface
#千問
pip install langchain-qwq

1. 讓模型跑起來

如何讓你llm跑起來,這裏用的是千問,來演示

案例

import os
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

#這裏是你的千問apikey
os.environ["DASHSCOPE_API_KEY"] = "apikey"

model = ChatTongyi(model="qwen-plus")

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一個精通{topic}的資深技術專家。"),
    ("user", "請用三句話解釋一下什麼是{concept}。")
])

output_parser = StrOutputParser()

chain = prompt | model | output_parser

#文本輸出
response = chain.invoke({"topic": "Python", "concept": "列表"})
print(response)

#分割
print("="*30)

#流式輸出
for chunk in chain.stream({"topic": "人工智能", "concept": "神經網絡"}):
    print(chunk, end="", flush=True)

代碼解釋

整個代碼的流程如下:
創建模型->構建提示詞->構建chain鏈->使用大模型

創建模型

這一步用不同的模型可能會不同
這裏利用langchain的千問庫創建模型,可能會不同

model = ChatTongyi(model="qwen-plus")

#例如用chatgpt
llm = init_chat_model("gpt-4o", model_provider="openai")
構建提示詞

這一步構建利用了langchain庫提供提示詞模板:
其中用{}闊起來的在調用時可以動態用字典替換

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一個精通{topic}的資深技術專家。"),
    ("user", "請用三句話解釋一下什麼是{concept}。")
])

各個角色功能如下:

角色名稱 (Role) 對應的類 作用説明
system SystemMessage 系統提示詞。用於設定 AI 的“人格”、專業背景、行為準則或約束條件。它通常優先級最高,決定了後續對話的基調。
user HumanMessage 用户消息。代表人類發送的內容。這是模型需要直接回答或處理的問題。
ai AIMessage AI 消息。代表模型之前的回覆。在構建多輪對話(帶記憶)時,需要把模型之前的回覆傳回去。
構建chain鏈

這個是langchain的靈魂,這裏簡單説明,後面會發更詳細的教學文章
chain鏈的運行流程如下:
將輸入填充prompt->將完整prompt餵給LLM->直接解析返回文本

StrOutputParser()這個是langchain提供的文本解析器,用於將上面的結果解析為文本

output_parser = StrOutputParser()
chain = prompt | model | output_parser
使用大模型

這裏有兩種方式:

  1. 直接輸出完整的文本
response = chain.invoke({"topic": "Python", "concept": "列表"})
print(response)
  1. 流文本輸出(打字機)
for chunk in chain.stream({"topic": "人工智能", "concept": "神經網絡"}):
    print(chunk, end="", flush=True)

如果❤喜歡❤本系列教程,就點個關注吧,後續不定期更新~

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.