Giới thiệu
Trong phần 1 của loạt bài này, tôi đã giới thiệu cách xây dựng một quy trình AI tự động, nơi nhiều nút tác nhân và công cụ được kết nối bằng LangGraph. Giờ đây, khi pipeline đã sẵn sàng và các prompt đã được thiết lập, hãy cùng xem nó hoạt động như thế nào.
Để trình bày kết quả bao gồm cả văn bản và hình ảnh, chúng ta sẽ tạo một giao diện người dùng đồ họa thanh lịch bằng Streamlit. Streamlit là công cụ tuyệt vời để xây dựng các ứng dụng dữ liệu Python, đặc biệt cho những lập trình viên backend như tôi không thoải mái với công việc frontend – làm cho nó trở thành lựa chọn lý tưởng cho ứng dụng AI đơn giản này.
Giao diện Người Dùng Cuối Cùng
Tôi sẽ bỏ qua chi tiết mã nguồn Streamlit ở đây, nhưng bạn có thể tìm thấy mọi thứ trong dự án GitHub của tôi. Dưới đây là giao diện cuối cùng của ứng dụng:
Cấu hình Giao diện
Bảng bên trái là phần cấu hình. Tại đây, bạn sẽ tìm thấy các công tắc để kích hoạt gỡ lỗi và ghi nhật ký, cũng như cài đặt số lần thử lại và giá trị timeout khi gọi API LLM từ xa (trong trường hợp này là Azure OpenAI). Cũng có tùy chọn để kích hoạt việc tạo hình ảnh, điều này sẽ kích hoạt các cuộc gọi tới API DALL-E 3.
Tính năng quan trọng nhất là dropdown Chọn Kiểu Biên Tập, cho phép bạn chọn file prompt sẽ được tải cho việc chỉnh sửa cuối cùng:
- Kiểu Chung: Bài viết nháp sẽ chỉ nhận được chỉnh sửa tối thiểu.
- Các kiểu khác: Như tên gọi gợi ý, bài viết sẽ được cải thiện đáng kể theo kiểu cụ thể được định nghĩa trong mỗi thiết lập prompt.
Xem Quy Trình Làm Việc
Một tính năng hữu ích là nút Hiển Thị Sơ Đồ Quy Trình, hiển thị một sơ đồ luồng của cấu hình đồ thị, sử dụng mã Mermaid đã đề cập trong bài viết trước. Điều này cung cấp một cách dễ dàng để xác nhận rằng đồ thị đã được thiết lập chính xác:
Thực Hành Viết Blog
Bây giờ, hãy thử viết một bài blog về nhiếp ảnh đường phố với ống kính cố định 35mm. Tôi rất thích nhiếp ảnh đường phố, và ống kính prime 35mm luôn là yêu thích của tôi. Nếu tôi phải chọn chỉ một ống kính để giữ lại, chắc chắn đó sẽ là 35mm – lý tưởng với khẩu độ f/1.4.
Bắt Đầu Với Kiểu Chỉnh Sửa Chung
Hãy bắt đầu với kiểu chỉnh sửa chung và nhấn nút Tạo Bài Viết:
Khi xây dựng đồ thị, tôi đã kích hoạt ghi lại thông tin quan trọng bằng cách sử dụng đối tượng logger. Từ đầu ra console, tôi có thể thấy:
Đây là dấu hiệu tốt — nó cho thấy rằng một tin nhắn tool_calls đã được phát hiện khi chạy cạnh điều kiện từ LLM nghiên cứu, và công cụ tìm kiếm web Tavily đã được sử dụng.
Tiếp theo, tôi cũng nhận thấy rằng nút công cụ hình ảnh đã được kích hoạt thành công – nút biên tập đã thực hiện một cuộc gọi API tới điểm cuối DALL-E 3 bằng các prompt đã định nghĩa cho kiểu chỉnh sửa chung.
Cuối cùng, nút biên tập đã trả về bài viết đã được trau chuốt thành công – mọi thứ đang hoạt động một cách mượt mà!
Kết Quả Đầu Ra Từ Các Tác Nhân
Nhưng chính xác thì các tác nhân khác nhau đang trả về điều gì? Hãy bắt đầu bằng cách xem xét đầu ra từ tác nhân nghiên cứu:
Đây chỉ là một phần của tóm tắt nghiên cứu – kết quả đầy đủ dài hơn nhiều. Tìm kiếm Tavily đã trả về một danh sách toàn diện về thông tin liên quan đến nhiếp ảnh đường phố với ống kính 35mm, bao gồm cả các liên kết nguồn. Làm tốt lắm!
Tiếp theo, hãy xem bài viết nháp được tạo ra bởi tác nhân viết. Dưới đây là hai phần đầu tiên:
Không tệ cho một bản nháp, mặc dù nó vẫn còn hơi cơ bản. Vậy bài viết cuối cùng được chỉnh sửa trông như thế nào sau khi áp dụng kiểu chỉnh sửa chung?
Tôi phải thừa nhận, sự khác biệt không đáng kể (các tiêu đề phần thậm chí không thay đổi). Đó là vì prompt cho kiểu chỉnh sửa chung không ưu ái bất kỳ tông nào — nó chỉ thực hiện các điều chỉnh nhỏ cho bản nháp.
Hình Ảnh Được Tạo Ra
Vậy hình ảnh được tạo ra thì sao?
Tôi nghĩ rằng các hình ảnh khá tiêu chuẩn — không thực sự ấn tượng. Nhưng điều đó là dễ hiểu, vì mô tả kiểu cho kiểu chỉnh sửa chung khá tầm thường:
markdown
Khi tạo hình ảnh:
- Sử dụng công cụ generate_article_image với các prompt chi tiết, mô tả mà DALL-E 3 có thể hiểu
- Viết các prompt rõ ràng, cụ thể mô tả chính xác những gì bạn muốn thấy trong hình ảnh
- Bao gồm các chi tiết về bố cục, ánh sáng, màu sắc và tâm trạng khi phù hợp
- Chỉ định một kiểu phù hợp dựa trên kiểu biên tập:
a. KIỂU PH критик: Sử dụng phong cách "nhiếp ảnh tài liệu chân thực"
- Yêu cầu: "Chụp bằng máy ảnh chuyên nghiệp, nhiếp ảnh báo chí, chi tiết cao, ánh sáng tự nhiên"
- Ví dụ: "Hình ảnh tài liệu chân thực về [đối tượng], phong cách báo chí chuyên nghiệp, chụp bằng máy ảnh DSLR, ánh sáng tự nhiên, chi tiết cao, tông nghiêm túc"
b. KIỂU CẢM XÚC: Sử dụng phong cách "minh họa sách nghệ thuật"
- Yêu cầu: "Hình minh họa, phong cách nghệ thuật sách, màu sắc ấm áp, không khí cảm xúc"
- Ví dụ: "Hình minh họa sách đẹp về [đối tượng], phong cách nghệ thuật vẽ tay, màu sắc cảm xúc ấm áp, ánh sáng mềm mại, không khí kể chuyện, gợi nhớ đến nghệ thuật sách trẻ em"
c. KIỂU HÀI HƯỚC: Sử dụng phong cách "hoạt hình 3D"
- Yêu cầu: "Hoạt hình 3D, phong cách hoạt hình Pixar/Disney, màu sắc sáng, đặc điểm phóng đại"
- Ví dụ: "Hình minh họa hoạt hình 3D dễ thương về [đối tượng], phong cách hoạt hình Pixar, màu sắc tươi sáng, nhân vật dễ thương với đôi mắt to, không khí vui tươi, chất lượng cao"
d. KIỂU CHUNG: Sử dụng phong cách "minh họa kỹ thuật số chuyên nghiệp"
- Yêu cầu: "Minh họa kỹ thuật số sạch, thiết kế hiện đại, màu sắc cân bằng"
- Ví dụ: "Minh họa kỹ thuật số chuyên nghiệp về [đối tượng], phong cách hiện đại sạch sẽ, chi tiết rõ ràng, bảng màu cân bằng, thiết kế thông tin"
Thử Kiểu Cảm Xúc
Nhưng nếu tôi thử sử dụng kiểu Cảm xúc thay vào đó? Tôi phải nói rằng, tôi rất vui khi thấy bài viết cuối cùng:
Tông giọng ngay lập tức trở nên cảm xúc và đồng cảm hơn, trình bày chủ đề như một câu chuyện — nhưng vẫn tập trung vào nhiếp ảnh đường phố với ống kính 35mm. Sự chuyển đổi này là chính xác những gì tôi mong đợi, vì prompt cho biên tập viên Cảm xúc như sau:
markdown
Kiểu Biên Tập: CẢM XÚC
Bạn là một biên tập viên blog sâu sắc, cảm xúc và đồng cảm, viết với đam mê và trái tim. Nhiệm vụ của bạn là chỉnh sửa bài viết được cung cấp thành một bài blog có sức ảnh hưởng cảm xúc, cảm giác như một câu chuyện ngắn hoặc tiểu thuyết, kết hợp chủ đề và chi tiết của bài viết vào một câu chuyện hấp dẫn. Kể chuyện là trung tâm trong cách tiếp cận của bạn, và chủ đề của câu chuyện (ví dụ: lãng mạn, gia đình, tình bạn hoặc một câu chuyện cảm xúc khác phù hợp) nên phù hợp với chủ đề gốc của bài viết để tạo ra sự kết nối sâu sắc.
Hướng dẫn:
- Biến đổi bài viết thành một bài blog đọc như một câu chuyện ngắn hoặc tiểu thuyết, hòa nhập các chi tiết của chủ đề vào câu chuyện để làm cho chúng trở nên gần gũi và hấp dẫn.
- Chọn một chủ đề câu chuyện (ví dụ: lãng mạn, gia đình, tình bạn) phù hợp với chủ đề của bài viết, đảm bảo câu chuyện cảm giác chân thực và có sức hấp dẫn cảm xúc.
- Thêm chiều sâu cảm xúc, kết nối chân thành và những suy ngẫm cá nhân để khơi dậy sự đồng cảm và làm cho độc giả cảm thấy sâu sắc với chủ đề.
- Sử dụng ngôn ngữ ấm áp, quan tâm chạm đến trái tim và duy trì sức hấp dẫn cảm xúc xuyên suốt.
- Đảm bảo câu chuyện chảy trôi một cách mượt mà, với mô tả sinh động, nhân vật gần gũi và những hiểu biết cảm xúc làm tăng cường kể chuyện.
- Phá vỡ các đoạn dài để dễ đọc và sử dụng tiêu đề hoặc tiêu đề phụ cảm xúc để hướng dẫn độc giả qua câu chuyện.
- Sửa bất kỳ lỗi ngữ pháp, chính tả hoặc phong cách nào từ bản nháp gốc.
- Tích hợp tự nhiên các sự thật, phát hiện hoặc hiểu biết chính của bài viết vào câu chuyện, đảm bảo chúng cảm thấy tự nhiên trong ngữ cảnh câu chuyện.
- Duy trì một tông giọng ấm áp, đồng cảm và hấp dẫn cảm xúc, thu hút độc giả vào câu chuyện và chủ đề.
- Nếu bài viết gốc bao gồm hình ảnh hoặc hướng dẫn liên quan đến hình ảnh, hãy tích hợp mô tả về một hình ảnh phù hợp, gợi cảm (ví dụ: “Hãy tưởng tượng một bức ảnh cũ của một gia đình quây quần bên bàn”) trong câu chuyện, nhưng không tạo ra hoặc lấy lại hình ảnh thực tế trừ khi được yêu cầu rõ ràng.
Dưới đây là bài viết để chỉnh sửa:
{article_draft}
Trả về bài blog được nâng cao cảm xúc chỉ.
Hình Ảnh Được Tạo Ra
Hình ảnh được tạo ra theo hướng dẫn của tôi — hình minh họa vẽ tay, phong cách nghệ thuật sách, màu sắc ấm áp, không khí cảm xúc — mặc dù về mặt thẩm mỹ, chúng không hoàn toàn hợp với khẩu vị của tôi.
Thử Kiểu Hài Hước
Hãy thử sử dụng kiểu Hài hước thay vì?
Thực sự có hài hước hay không thì còn tùy, nhưng tông giọng chắc chắn nhẹ nhàng và hài hước hơn (ít nhất LLM đã cố gắng!).
Tuy nhiên, các hình ảnh đi kèm thực sự khá phù hợp với những gì tôi mong đợi:
Có Thể Làm Tốt Hơn?
Dự án nhỏ này đã chiếm thời gian rảnh rỗi của tôi trong ba ngày. Mặc dù nó chỉ là một ứng dụng bình thường, tôi đã rất thích quá trình học hỏi và tôi sẵn sàng đón nhận những thử thách tiếp theo.
Nhưng có thể cải thiện không? Nhìn lại kết quả cuối cùng, chắc chắn có một số lĩnh vực cần tối ưu hóa.
-
Hiện tại, tác nhân chỉnh sửa sử dụng một prompt kết hợp cho cả chỉnh sửa tài liệu và tạo hình ảnh, cùng với hướng dẫn nhúng URL hình ảnh vào đầu ra. Tôi nhận thấy rằng LLM đôi khi không nhúng các URL một cách chính xác, mặc dù nhật ký hệ thống xác nhận rằng hình ảnh đã được tạo ra và các URL đã được trả về. Việc tách biệt định dạng tài liệu khỏi prompt của tác nhân biên tập có thể đơn giản hóa mọi thứ và làm cho quy trình trở nên đáng tin cậy hơn.
-
Thêm vào đó, thông tin ngữ cảnh về bài viết cuối cùng nên được đưa vào khi tạo các prompt hình ảnh. Hiện tại, prompt chỉ dựa trên kiểu biên tập và chủ đề bài viết. Điều này hoạt động với kiểu chỉnh sửa chung, nhưng khi sử dụng kiểu Cảm xúc — mà biến bài viết thành một câu chuyện — hình ảnh thường không phù hợp với ngữ cảnh câu chuyện.
Đã Đến Lúc Nâng Cấp Vui Vẻ!
Vậy đó có phải là tất cả không? Không hề! Thay vì tự nghĩ ra các chủ đề, tại sao không để AI tìm kiếm và gợi ý các chủ đề để viết về? Tôi sẽ đề cập đến điều này trong bài viết tiếp theo.
(Nguồn mã: GitHub)