Mô hình Trò chuyện

Mô hình trò chuyện là một biến thể của mô hình ngôn ngữ. Mặc dù mô hình trò chuyện sử dụng mô hình ngôn ngữ (LLM) ở cấp độ dưới, giao diện công khai của chúng có phần khác biệt. Thay vì tiết lộ một API cho "đầu vào văn bản, đầu ra văn bản", chúng sử dụng một giao diện nhận "tin nhắn trò chuyện" như đầu vào và đầu ra. Toàn bộ quá trình tương tác của mô hình trò chuyện tương tự như quá trình trao đổi tin nhắn trò chuyện.

Bắt đầu với Mô hình Trò chuyện

Chương này dựa trên mô hình của OpenAI.

Cấu hình

Mặc định, LangChain không có các phụ thuộc mô hình được cài đặt. Đầu tiên, cài đặt gói Python của OpenAI:

pip install langchain-openai

Truy cập API cần một khóa API, có thể được cấu hình thông qua biến môi trường. Ví dụ sau minh họa cách thiết lập nó trong môi trường Linux:

export OPENAI_API_KEY="..."

Nếu bạn không muốn thiết lập biến môi trường, bạn có thể truyền khóa trực tiếp thông qua tham số có tên openai_api_key khi khởi tạo lớp OpenAI LLM:

from langchain_openai import ChatOpenAI

chat = ChatOpenAI(openai_api_key="...")

Hoặc bạn có thể khởi tạo nó mà không có bất kỳ tham số nào:

from langchain_openai import ChatOpenAI
chat = ChatOpenAI()

Tin nhắn

Giao diện mô hình trò chuyện dựa trên tin nhắn thay vì văn bản thô. Các loại tin nhắn được hỗ trợ bởi LangChain hiện tại bao gồm AIMessage, HumanMessage, SystemMessage, FunctionMessage, và ChatMessage, trong đó ChatMessage yêu cầu một tham số vai trò tùy ý. Trong hầu hết các trường hợp, bạn sẽ chỉ xử lý HumanMessage, AIMessage, và SystemMessage.

LCEL

Mô hình trò chuyện thực hiện giao diện Chạy, hỗ trợ các phương thức như gọi, gọiainvoke, stream, astream, batch, abatch, astream_log, do đó mô hình trò chuyện cũng có thể được sử dụng cho biểu thức Ngôn ngữ Biểu diễn LangChain (LCEL).

Mô hình trò chuyện chấp nhận một Danh sách[Tin nhắn cơ bản] làm đầu vào, hoặc có thể chấp nhận các đối tượng có thể ép buộc thành tin nhắn, bao gồm str (chuyển đổi thành HumanMessage) và PromptValue.

from langchain_core.messages import HumanMessage, SystemMessage

tin_nhắn = [
    SystemMessage(content="Bạn là một trợ lý hữu ích"),
    HumanMessage(content="Mục đích của việc chuẩn hóa mô hình là gì?"),
]

Gọi mô hình với một mảng tin nhắn:

chat.invoke(tin_nhắn)

Ví dụ về tin nhắn trả về:

AIMessage(content="Nội dung phản hồi của AI... chi tiết bị lược bỏ...")

Lấy ra đầu ra phản hồi của AI:

for phần in chat.stream(tin_nhắn):
    in_phần.content, end="", flush=True)