跳到主要內容
Open In ColabOpen on GitHub

使用聊天模型和提示範本建構簡單的 LLM 應用程式

在這個快速入門中,我們將向您展示如何使用 LangChain 建構一個簡單的 LLM 應用程式。此應用程式將文本從英文翻譯成另一種語言。這是一個相對簡單的 LLM 應用程式 - 它只是一個 LLM 呼叫加上一些提示。儘管如此,這是一個開始使用 LangChain 的絕佳方式 - 許多功能只需一些提示和一個 LLM 呼叫即可建構!

閱讀本教學課程後,您將對以下內容有高階概述

讓我們深入探討!

設定

Jupyter Notebook

這個和其他教學課程可能最方便在 Jupyter notebooks 中執行。在互動式環境中瀏覽指南是更好地理解它們的好方法。請參閱這裡以獲取有關如何安裝的說明。

安裝

要安裝 LangChain,請執行

pip install langchain

有關更多詳細資訊,請參閱我們的安裝指南

LangSmith

您使用 LangChain 建構的許多應用程式將包含多個步驟,其中包含多個 LLM 呼叫調用。隨著這些應用程式變得越來越複雜,能夠檢查鏈或代理內部到底發生了什麼變得至關重要。執行此操作的最佳方法是使用 LangSmith

在上面的連結註冊後,請確保設定您的環境變數以開始記錄追蹤

export LANGSMITH_TRACING="true"
export LANGSMITH_API_KEY="..."

或者,如果在 notebook 中,您可以使用以下程式碼設定它們

import getpass
import os

os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGSMITH_API_KEY"] = getpass.getpass()

使用語言模型

首先,讓我們學習如何單獨使用語言模型。LangChain 支援許多不同的語言模型,您可以互換使用。有關開始使用特定模型的詳細資訊,請參閱支援的整合

pip install -qU "langchain[openai]"
import getpass
import os

if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter API key for OpenAI: ")

from langchain.chat_models import init_chat_model

model = init_chat_model("gpt-4o-mini", model_provider="openai")

讓我們首先直接使用模型。聊天模型是 LangChain 可執行物件的實例,這意味著它們公開了一個用於與之互動的標準介面。要簡單地呼叫模型,我們可以將 訊息列表傳遞給 .invoke 方法。

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
SystemMessage("Translate the following from English into Italian"),
HumanMessage("hi!"),
]

model.invoke(messages)
AIMessage(content='Ciao!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 3, 'prompt_tokens': 20, 'total_tokens': 23, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_0705bf87c0', 'finish_reason': 'stop', 'logprobs': None}, id='run-32654a56-627c-40e1-a141-ad9350bbfd3e-0', usage_metadata={'input_tokens': 20, 'output_tokens': 3, 'total_tokens': 23, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})
提示

如果我們啟用了 LangSmith,我們可以看見這個執行記錄在 LangSmith 中,並且可以看見 LangSmith 追蹤。LangSmith 追蹤報告 token 使用資訊、延遲、標準模型參數(例如溫度)和其他資訊。

請注意,聊天模型接收 訊息物件作為輸入,並生成訊息物件作為輸出。除了文本內容外,訊息物件還傳達對話 角色並保存重要資料,例如 工具呼叫 和 token 使用計數。

LangChain 也支援透過字串或 OpenAI 格式輸入聊天模型。以下是等效的

model.invoke("Hello")

model.invoke([{"role": "user", "content": "Hello"}])

model.invoke([HumanMessage("Hello")])

串流

由於聊天模型是 可執行物件,它們公開了一個標準介面,其中包括非同步和串流調用模式。這允許我們從聊天模型串流單個 token

for token in model.stream(messages):
print(token.content, end="|")
|C|iao|!||

您可以在本指南中找到有關串流聊天模型輸出的更多詳細資訊。

提示範本

現在我們直接將訊息列表傳遞到語言模型中。這個訊息列表從哪裡來?通常,它是由使用者輸入和應用程式邏輯組合建構而成的。此應用程式邏輯通常接收原始使用者輸入,並將其轉換為準備傳遞給語言模型的訊息列表。常見的轉換包括添加系統訊息或使用使用者輸入格式化範本。

提示範本是 LangChain 中的一個概念,旨在協助進行此轉換。它們接收原始使用者輸入並返回準備傳遞到語言模型的資料(提示)。

讓我們在這裡建立一個提示範本。它將接收兩個使用者變數

  • language:要將文本翻譯成的語言
  • text:要翻譯的文本
from langchain_core.prompts import ChatPromptTemplate

system_template = "Translate the following from English into {language}"

prompt_template = ChatPromptTemplate.from_messages(
[("system", system_template), ("user", "{text}")]
)
API 參考:ChatPromptTemplate

請注意,ChatPromptTemplate 在單個範本中支援多個訊息角色。我們將 language 參數格式化為系統訊息,並將使用者 text 格式化為使用者訊息。

此提示範本的輸入是一個字典。我們可以單獨使用此提示範本來看看它本身的作用

prompt = prompt_template.invoke({"language": "Italian", "text": "hi!"})

prompt
ChatPromptValue(messages=[SystemMessage(content='Translate the following from English into Italian', additional_kwargs={}, response_metadata={}), HumanMessage(content='hi!', additional_kwargs={}, response_metadata={})])

我們可以看見它返回一個 ChatPromptValue,其中包含兩個訊息。如果我們想要直接存取訊息,我們執行

prompt.to_messages()
[SystemMessage(content='Translate the following from English into Italian', additional_kwargs={}, response_metadata={}),
HumanMessage(content='hi!', additional_kwargs={}, response_metadata={})]

最後,我們可以在格式化的提示上調用聊天模型

response = model.invoke(prompt)
print(response.content)
Ciao!
提示

訊息 content 可以同時包含文本和具有其他結構的 內容區塊。有關更多資訊,請參閱本指南

如果我們查看 LangSmith 追蹤,我們可以準確地看見聊天模型接收到的提示,以及 token 使用資訊、延遲、標準模型參數(例如溫度)和其他資訊。

結論

就是這樣!在本教學課程中,您學習了如何建立您的第一個簡單 LLM 應用程式。您學習了如何使用語言模型、如何建立提示範本,以及如何透過 LangSmith 深入了解您建立的應用程式的可觀察性。

這只是您想要學習成為一名精通的 AI 工程師的冰山一角。幸運的是 - 我們有很多其他資源!

有關 LangChain 核心概念的進一步閱讀,我們提供了詳細的概念指南

如果您對這些概念有更具體的問題,請查看操作指南的以下部分

以及 LangSmith 文件


此頁面是否有幫助?