0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Khám Phá LangGraph.js: Phần 2 - Các Khái Niệm Quan Trọng và Ứng Dụng Thực Tế

Đăng vào 3 tuần trước

• 3 phút đọc

Giới Thiệu

Trong phần 2 của bài viết này, chúng ta sẽ tiếp tục khám phá các khái niệm quan trọng trong LangGraph.js mà bạn cần biết để tối ưu hóa quy trình làm việc AI của mình.

Root Reducer

LangGraph.js sử dụng StateGraph, cho phép thiết kế một cấu trúc state phức tạp hơn. Ví dụ dưới đây sẽ giúp bạn hiểu rõ hơn về cách sử dụng root reducer:

javascript Copy
import { StateGraph, END, START } from "@langchain/langgraph";

const builderE = new StateGraph({
  channels: {
    __root__: {
      reducer: (x: string[], y?: string[]) => x.concat(y ?? []),
      default: () => [],
    },
  },
})
  .addNode("my_node", (state) => {
    return [`Thêm một tin nhắn vào ${state}`];
  })
  .addEdge(START, "my_node")
  .addEdge("my_node", END);

const graphE = builderE.compile();

console.log(await graphE.invoke(["Chào"]));
// ["Chào", 'Thêm một tin nhắn vào Chào']

Trong ví dụ trên, StateGraph cho phép chúng ta tạo ra các luồng dữ liệu có thể theo dõi và thay đổi, cung cấp cho chúng ta nhiều lợi ích trong việc xây dựng quy trình làm việc AI.

Lợi ích của State Graph

  1. Kiểm tra dữ liệu: Bạn có thể kiểm tra luồng dữ liệu trước và sau mỗi "siêu bước".
  2. Thay đổi State: State có thể thay đổi, cho phép kiểm soát hướng của các agent dễ dàng hơn.
  3. Checkpoint: Các điểm kiểm tra xác định rõ ràng giúp lưu trữ và khôi phục quy trình dễ dàng.

Persistence: Tại Sao Cần Bộ Nhớ?

Hệ thống AI cần bộ nhớ để duy trì thông tin trong suốt quá trình hoạt động:

  1. Nhớ các bước thực hiện trong nhiệm vụ.
  2. Giữ lại các cuộc trò chuyện trước đó với người dùng.
  3. Ghi nhớ các tương tác và hành vi để hệ thống trở nên cá nhân hóa.

Bộ nhớ trong LangGraph.js rất quan trọng và có thể xử lý thông qua các checkpoint.

Checkpoints: Quản Lý Bộ Nhớ

Checkpoint trong LangGraph.js đánh dấu trạng thái tại một thời điểm nhất định, hỗ trợ lưu trữ và tiếp tục từ nơi đã dừng lại.

  • Bộ Nhớ Trong Một Lần Chạy: Checkpoint được tạo ở mọi bước, cho phép khôi phục trạng thái trước đó khi có lỗi xảy ra.
  • Bộ Nhớ Nhiều Lượt: Các checkpoint lưu dưới dạng thread_id giúp duy trì thông tin giữa các lượt tương tác.

Cấu Hình Trong Graph

Các giá trị cấu hình cho một triển khai graph rất quan trọng. Một số giá trị như thread_id, user_id, hay thông tin liên quan đến LLM có thể được tách biệt khỏi luồng dữ liệu chính để tối ưu hóa hiệu suất.

Ví Dụ Thực Tế

Hãy xem một ví dụ chi tiết về cách nhiều nhớ hoạt động trong LangGraph.js:

javascript Copy
import { END, MemorySaver, START, StateGraph } from "@langchain/langgraph";

interface State {
  total: number;
  turn?: string;
}

function addF(existing: number, updated?: number) {
  return existing + (updated ?? 0);
}

const builder = new StateGraph<State>({
  channels: {
    total: {
      value: addF,
      default: () => 0,
    },
  },
})
  .addNode("add_one", (_state) => ({ total: 1 }))
  .addEdge(START, "add_one")
  .addEdge("add_one", END);

const memory = new MemorySaver();
const graphG = builder.compile({ checkpointer: memory });

let threadId = "some-thread";
let config = { configurable: { thread_id: threadId } };

const result = await graphG.invoke({ total: 1, turn: "Lượt đầu tiên" }, config);
const result2 = await graphG.invoke({ turn: "Lượt tiếp theo" }, config);
const result3 = await graphG.invoke({ total: 5 }, config);
const result4 = await graphG.invoke(
  { total: 5 },
  { configurable: { thread_id: "new-thread-id" } }
);

console.log(result);
// { total: 2, turn: 'Lượt đầu tiên' }
console.log(result2);
// { total: 3, turn: 'Lượt tiếp theo' }
console.log(result3);
// { total: 9, turn: 'Lượt tiếp theo' }
console.log(result4);
// { total: 6 }

Trong ví dụ trên, bạn có thể thấy rõ cách checkpoint hoạt động và cách mà các cập nhật từ người dùng được xử lý trong LangGraph.js.

Kết Luận

LangGraph.js không chỉ là một thư viện, mà là một công cụ mạnh mẽ để xây dựng các hệ thống AI linh hoạt. Bằng cách hiểu và áp dụng các khái niệm như Root Reducer, Persistence, Checkpoints và cấu hình, bạn có thể phát triển các ứng dụng AI đáng tin cậy và tối ưu hóa quy trình làm việc cho riêng mình.

Hãy theo dõi các bài viết tiếp theo để tìm hiểu thêm về LangGraph.js và cách ứng dụng của nó trong phát triển AI.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào