Ứng dụng xây dựng khung một cửa với LLM
Ngày 21/01/2024 - 04:01Các Mô hình ngôn ngữ lớn này đang được nghiên cứu để tạo ra các ứng dụng khác nhau từ Chatbot trả lời câu hỏi đến Trình tạo văn bản cho đến Bot đàm thoại, v.v. Nhiều API mới đang được tạo và mỗi API có cách đào tạo và thử nghiệm dữ liệu riêng của chúng tôi đối với nó. Đây là nơi LangChain phù hợp, Khung/Thư viện Python để phát triển các ứng dụng được hỗ trợ bởi các Mô hình ngôn ngữ này. Trong bài viết này, chúng ta sẽ xây dựng các ứng dụng với LLM.
Mục tiêu học tập
- Để hiểu Khung LangChain
- Để tạo ứng dụng với LangChain
- Hiểu các thành phần liên quan đến nó
- Xây dựng chuỗi thông qua LangChain cho các mô hình ngôn ngữ
- Tìm hiểu các tác nhân và lời nhắc trong LangChain
Bài viết này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.
XEM THÊM: Tài khoản ChatGPT-4 – Trợ thủ đắc lực hay chỉ là phiên bản nâng cấp?
LangChain là gì? Tại sao nó cần thiết?
LangChain là Thư viện Python để xây dựng các ứng dụng được cung cấp bởi Mô hình ngôn ngữ lớn . Nó không chỉ đảm nhiệm việc kết nối với các Mô hình ngôn ngữ lớn khác nhau thông qua API mà thậm chí còn làm cho các LLM này kết nối với nguồn dữ liệu và thậm chí khiến chúng nhận biết được môi trường của mình và tương tác với nó. Vậy nó phù hợp như thế nào? Vấn đề là các Mô hình Ngôn ngữ Lớn này nếu đứng riêng lẻ thì có thể không mạnh đến thế. Do đó, với LangChain, chúng tôi có thể kết nối chúng với các nguồn dữ liệu và tính toán bên ngoài, điều này sẽ giúp ích rất nhiều cho chúng để đưa ra câu trả lời hay.
Do đó, LangChain giúp chúng tôi có thể làm cho Mô hình ngôn ngữ kết nối với cơ sở dữ liệu của riêng mình và tạo các ứng dụng xung quanh chúng, cho phép chúng tham chiếu dữ liệu. Với LangChain, bạn không chỉ có thể tạo Mô hình ngôn ngữ để tạo Bot trả lời câu hỏi dựa trên dữ liệu bạn cung cấp mà thậm chí còn khiến Mô hình ngôn ngữ thực hiện một số hành động nhất định dựa trên câu hỏi, từ đó biến chúng thành Phần mềm nhận biết dữ liệu và Tác nhân. Chúng tôi sẽ xem xét những hành động này sâu hơn trong bài viết.
Khung LangChain chứa các Thành phần cấu thành nên trình bao bọc LLM, là các trình bao bọc cho các API mô hình ngôn ngữ phổ biến, từ AI mở, Ôm mặt, v.v. Nó thậm chí còn bao gồm các Mẫu nhắc nhở để tạo Lời nhắc của riêng chúng ta. LangChain, bản thân tên có từ Chuỗi, do đó có thể xâu chuỗi nhiều Thành phần lại với nhau và cuối cùng là Tác nhân, mà chúng ta đã nói đến trước đây, cho phép mô hình tương tác với dữ liệu và tính toán bên ngoài.
Cài đặt LangChain
Giống như tất cả các thư viện Python khác, LangChain có thể được cài đặt thông qua lệnh pip của Python. Lệnh cho việc này là:
Thao tác này sẽ tải xuống và cài đặt phiên bản ổn định mới nhất của langchain Framework trong Python. Khung langchain đi kèm với nhiều trình bao bọc LLM, Trình bao bọc ChatBot, Lược đồ trò chuyện và Mẫu nhắc nhở
Ngoài Gói LangChain, chúng tôi thậm chí cần cài đặt các gói sau mà chúng tôi sẽ thực hiện trong bài viết này
Thao tác này sẽ cài đặt trung tâm khuôn mặt ôm, nơi chúng ta có thể làm việc với các API khuôn mặt ôm. OpenAI đã được cài đặt, do đó chúng tôi có thể làm việc với các mô hình GPT và một mô hình LLM nữa mà chúng tôi đã cài đặt là ai21, đó là Mô hình ngôn ngữ Studio AI21. Chúng tôi sẽ làm việc với 3 mô hình này, viết ví dụ và tìm hiểu xem LangChain phù hợp như thế nào.
Xây dựng ứng dụng với LLMs Wrapper
LangChain cung cấp trình bao bọc cho các mô hình khác nhau từ LLM đến Mô hình trò chuyện đến Mô hình nhúng văn bản. Mô hình ngôn ngữ lớn là mô hình lấy văn bản làm đầu vào và đầu ra được trả về là một chuỗi văn bản. Trong phần này, chúng ta sẽ xem xét các trình bao bọc LangChain, tức là giao diện tiêu chuẩn mà nó cung cấp cho các Mô hình ngôn ngữ lớn khác nhau như Ôm mặt, Open AI, Studio AI21, v.v.
Hãy bắt đầu bằng cách sử dụng mô hình AI mở trong LangChain. Mã tương ứng sẽ là
Ở đây chúng tôi nhập OpenAI Wrapper từ LangChain. Sau đó, chúng tôi tạo một Phiên bản của nó có tên là llm và cung cấp thông tin đầu vào, tên mô hình mà chúng tôi muốn sử dụng. Bây giờ với biến llm này, chúng ta chuyển trực tiếp truy vấn để nhận kết quả đầu ra. Chạy mã này đã cho kết quả:
Chúng tôi thấy rằng mô hình đưa ra một trò đùa dựa trên truy vấn được cung cấp. Bây giờ chúng ta hãy thử điều này với Mô hình ôm mặt.
Chúng tôi đã tuân theo quy trình tương tự như chúng tôi đã làm với mô hình OpenAI. Ở đây chúng tôi đang làm việc với mô hình flan-t5 và đã đặt nhiệt độ thành 1e-1. Sự khác biệt duy nhất là ở đây chúng tôi sử dụng phương thức generate() của mô hình LLM để chuyển các truy vấn. Phương thức generate() này được sử dụng khi bạn muốn chuyển nhiều truy vấn cùng một lúc. Chúng được chuyển dưới dạng danh sách mà chúng tôi đã thực hiện ở trên. Để có được đầu ra của mô hình, chúng ta gọi hàm thế hệ. Kết quả đầu ra chúng tôi nhận được sau khi chạy mã là
Chúng tôi thấy 2 câu trả lời từ mô hình. Đầu tiên là Yury Gagarin, người thực sự là người đầu tiên bước vào không gian và câu trả lời thứ hai là 4, đúng. Cuối cùng, chúng ta sẽ xem xét một trình bao bọc LLM khác, lần này là dành cho AI21 Studio cung cấp cho chúng ta quyền truy cập API vào Jurrasic – 2 LLM. Hãy nhìn vào mã:
Một lần nữa, chúng ta thấy rằng cách triển khai mã tổng thể gần giống với ví dụ OpenAI mà chúng ta đã thấy trước đó. Sự khác biệt duy nhất là Khóa API và trình bao bọc LLM đang được nhập là AI21. Ở đây chúng tôi đã đưa ra một truy vấn để kể một câu chuyện cười về ô tô, hãy xem nó hoạt động như thế nào
AI21 thực sự đã làm rất tốt với câu trả lời mà nó đưa ra. Vì vậy, trong phần này, chúng ta đã tìm hiểu cách sử dụng các trình bao bọc LLM khác nhau từ LangChain để làm việc với các Mô hình ngôn ngữ khác nhau. Ngoài 3 trình bao bọc mà chúng ta đã thấy, LangChain còn cung cấp nhiều trình bao bọc khác cho nhiều Mô hình ngôn ngữ khác hiện có.
Mẫu nhắc nhở
Lời nhắc là một phần quan trọng khi phát triển ứng dụng với Mô hình ngôn ngữ lớn. Ban đầu, người ta sẽ phải đào tạo lại toàn bộ mô hình hoặc phải làm việc với một mô hình hoàn toàn khác để thực hiện các nhiệm vụ khác nhau, chẳng hạn như một mô hình cho Dịch thuật và một mô hình cho Tóm tắt. Nhưng mục nhập của Mẫu nhắc nhở đã thay đổi tất cả. Với các mẫu Lời nhắc, chúng tôi có thể khiến Mô hình ngôn ngữ thực hiện bất kỳ điều gì từ Dịch thuật đến Trả lời câu hỏi cho đến Tạo/Tóm tắt văn bản trên các dữ liệu khác nhau.
Trong bài viết này, chúng ta sẽ xem xét các Mẫu nhắc nhở trong langchain với các mô hình OpenAI. Hãy bắt đầu bằng cách tạo một mẫu và sau đó đưa nó vào lớp NhắcTemplate của LangChain
Bước đầu tiên là viết một mẫu. Ở đây, chúng tôi đã viết một mẫu cho biết rằng chúng tôi muốn AI hoạt động giống như một Người du hành thời gian vui nhộn, tức là chúng tôi đã đặt bối cảnh cho AI và cách nó sẽ hoạt động. Sau đó, chúng tôi đưa ra truy vấn vì chúng tôi là một nhà sử học. Truy vấn xuất hiện trong {} vì chúng tôi muốn phần đó được thay thế bằng câu hỏi mà chúng tôi muốn hỏi. Sau đó, mẫu này được trao cho lớp NhắcTemplate từ LangChain. Ở đây, chúng tôi chuyển mẫu cho biến mẫu và sau đó chúng tôi gọi biến đầu vào là “truy vấn” (biến đầu vào là nơi đặt câu hỏi của chúng tôi).
Hãy thử tạo một câu hỏi và quan sát Lời nhắc sẽ được tạo.
Ở đây, trong kết quả đầu ra, chúng ta thấy rằng {query} được thay thế bằng câu hỏi mà chúng ta đã đưa ra cho biến “truy vấn” được cung cấp cho hàm format() của Phiên bản nhắc nhở. Vì vậy, NhắcTemplate thực hiện công việc định dạng truy vấn của chúng ta trước khi chúng ta có thể gửi nó tới mô hình. Bây giờ chúng ta đã tạo thành công Mẫu nhắc nhở. Bây giờ chúng tôi sẽ thử nghiệm mẫu này với mô hình OpenAI. Sau đây sẽ là mã:
Ở đây một lần nữa, chúng tôi đang làm việc với trình bao bọc LLM từ langchain cho Mô hình ngôn ngữ OpenAI. Sau đó, chúng tôi sẽ đưa Lời nhắc trực tiếp cho llm, giống như cách chúng tôi đã chuyển trong ví dụ về mã bắt đầu. Sau đó, thao tác này sẽ in kết quả do mô hình tạo ra, đó là:
đầu ra
Hà! Không thể nào, mặc dù hôm nọ tôi đã thấy một người nông dân sử dụng bù nhìn robot để xua đuổi lũ chim khỏi cánh đồng ngô của mình. Điều đó có được tính không?
Nhìn vào kết quả đầu ra, chúng ta có thể nói rằng mô hình Ngôn ngữ thực sự hoạt động giống như một Người du hành thời gian. Mẫu lời nhắc có thể được cung cấp với nhiều truy vấn. Hãy thử tạo một mẫu để cung cấp nhiều đầu vào cho Mô hình ngôn ngữ
Phần trên mô tả mã cho nhiều mẫu truy vấn. Ở đây trong Mẫu lời nhắc, chúng tôi đã viết ngay từ đầu rằng các câu hỏi phải được trả lời từng câu hỏi một. Sau đó, chúng tôi cung cấp mẫu này cho lớp NhắcTemplate. Lưu trữ tất cả các câu hỏi trong một danh sách gọi là qs. Cũng giống như trước đây, chúng ta chuyển danh sách qs này cho biến truy vấn trong hàm nhắc.format() và đưa nó vào mô hình. Bây giờ hãy kiểm tra đầu ra do Mô hình ngôn ngữ tạo ra
Chúng tôi thấy rằng Mô hình ngôn ngữ OpenAI đã đưa ra từng câu trả lời đúng đầu ra. Cho đến nay, những gì chúng tôi đã làm với Mẫu nhắc nhở chỉ là một cái nhìn thoáng qua. Chúng tôi có thể làm được nhiều việc hơn bằng cách sử dụng Thành phần nhắc nhở từ Khung LangChain. Một ví dụ là chúng ta có thể thực hiện Học ít lần bằng cách cung cấp một số ví dụ trong ngữ cảnh của chính Mẫu lời nhắc.
LangChain – Xâu chuỗi các thành phần lại với nhau
LangChain, chính cái tên đã có chữ Chain trong đó. Trong phần này, chúng ta sẽ xem xét Mô-đun chuỗi của LangChain. Khi phát triển ứng dụng, sử dụng Mô hình ngôn ngữ một cách riêng biệt là tốt, tức là đối với các ứng dụng nhỏ, nhưng khi tạo các ứng dụng phức tạp, tốt hơn nên xâu chuỗi các LLM, tức là xâu chuỗi hai LLM tương tự hoặc hai LLM khác nhau. LangChain cung cấp Giao diện chuẩn để kết nối các Mô hình ngôn ngữ khác nhau lại với nhau. Chuỗi có thể được sử dụng để kết nối các Thành phần khác nhau như LLM và thậm chí cả Lời nhắc với nhau để thực hiện một hành động cụ thể
XEM THÊM: Tài khoản ChatGPT Plus có xứng đáng với số tiền bạn bỏ ra? Sự thật sẽ khiến bạn bất ngờ!
Ví dụ
Hãy bắt đầu bằng cách lấy một ví dụ đơn giản về việc kết nối Mô hình ngôn ngữ OpenAI với Lời nhắc
- Tạo một mẫu, nói rằng mọi câu hỏi của người dùng đều được AI trả lời một cách hài hước và lấy ví dụ về quả chuối.
- Sau đó, mẫu này được chuyển đến hàm NhắcTemplate() để tạo Mẫu nhắc nhở từ đó.
- Sau đó, với trình bao bọc OpenAI LLM, chúng tôi khởi tạo mô hình OpenAI.
- Chúng tôi đã nhập LLMChain từ LangChain. LLMChain là một trong những Chuỗi đơn giản nhất do LangChain cung cấp. Để làm được điều này, chúng tôi chuyển Mẫu lời nhắc và Mô hình ngôn ngữ
- Cuối cùng, chúng ta chuyển truy vấn trực tiếp đến hàm run() của llm_chain
Những gì LLMChain làm là đầu tiên nó gửi truy vấn đầu vào đến phần tử đầu tiên trong chuỗi, tức là tới Lời nhắc, tức là NhắcTemplate. Ở đây đầu vào được định dạng thành một Lời nhắc cụ thể. Lời nhắc được định dạng này sau đó được chuyển sang phần tử tiếp theo trong chuỗi, tức là mô hình ngôn ngữ. Vì vậy, một chuỗi có thể được coi giống như một Đường ống. Hãy xem đầu ra được tạo ra.
Đầu ra: Machine Learning giống như một quả chuối. Bạn tiếp tục cung cấp cho nó dữ liệu và nó sẽ dần dần phát triển các kỹ năng cần thiết để đưa ra những quyết định thông minh hơn. Nó giống như một quả chuối phát triển từ một quả nhỏ còn xanh thành một quả chín hoàn toàn và ngon lành. Với Machine Learning, bạn cung cấp càng nhiều dữ liệu thì nó càng thông minh hơn!
Ở đây chúng tôi nhận được câu trả lời cho câu hỏi chúng tôi đã hỏi. Câu trả lời được tạo ra vừa hài hước vừa có chứa ví dụ về quả chuối trong đó. Vì vậy, bây giờ chúng ta có thể nhận được một câu hỏi, hai chuỗi có thể được nối với nhau không? Vâng, câu trả lời là hoàn toàn CÓ. Trong ví dụ tiếp theo, chúng ta sẽ thực hiện tương tự. Chúng ta sẽ tạo hai chuỗi với hai mô hình, sau đó chúng ta sẽ xâu chuỗi cả hai chuỗi lại với nhau. Mã cho điều này là
- Đầu tiên, chúng tôi đã tạo hai mẫu, một mẫu hỏi mô hình về năm mà một Đội cricket cụ thể đã giành chiến thắng và mẫu thứ hai, được đưa ra trong năm, cho biết người đánh bóng có điểm cao nhất
- Sau khi tạo xong các mẫu thì chúng ta tạo các Mẫu nhắc nhở cho cả hai mẫu đó
- Sau đó, chúng tôi tạo chuỗi đầu tiên của mình, team_chain, chứa Mô hình ngôn ngữ OpenAI mà chúng tôi đã xác định trong mã đầu tiên và mẫu đầu tiên. Đầu vào cho mẫu đầu tiên của chúng tôi là TÊN NHÓM
- Sau đó, chúng tôi tạo chuỗi thứ hai. Chuỗi này có cùng một mô hình nhưng mẫu đã cho là mẫu thứ hai. Chuỗi này diễn ra trong NĂM và mang lại cho người đánh bóng IPL điểm cao nhất trong năm đó.
- Cuối cùng, chúng tôi kết hợp hai chuỗi này với hàm SimpleSequentialChain() và lưu trữ nó trong biến Final_chain. Ở đây chúng ta chuyển các chuỗi dưới dạng một danh sách. Điều quan trọng là phải đảm bảo rằng các chuỗi được lưu trữ trong danh sách theo đúng thứ tự cần thiết. Chúng tôi thậm chí còn đặt chi tiết thành True để có thể hiểu rõ hơn về kết quả đầu ra
Bây giờ chúng tôi đã chạy mã bằng cách cung cấp cho Sunrisers Hyderabad làm đầu vào cho chuỗi cuối cùng của chúng tôi. Đầu ra được trả về là:
Đầu ra được tạo ra thực sự là True. Vậy nó đã làm điều đó như thế nào? Đầu tiên, đầu vào của Sunrisers Hyderabad được đưa vào chuỗi đầu tiên, tức là team_chain. Đầu ra của team_chain nằm ở dòng 1. Vì vậy, nó trả về đầu ra. tức là năm 2016. team_chain tạo ra một đầu ra, đóng vai trò là đầu vào cho chuỗi thứ hai, batsman_chain. batsman_chain lấy thông tin đầu vào của Năm, cụ thể là năm 2016 và tạo ra tên của vận động viên đánh bóng IPL có điểm cao nhất trong năm đó. Dòng thứ hai hiển thị đầu ra của chuỗi này. Vì vậy, đây là cách hoạt động cụ thể của chuỗi/kết hợp hai hoặc nhiều chuỗi.
Một lần nữa, chúng ta chỉ xem xét một số khái niệm về Chuỗi trong LangChain. Các nhà phát triển có thể làm việc với Chains để tạo ra nhiều ứng dụng khác nhau. Họ cũng có thể tự phân loại các chuỗi, mặc dù chủ đề này nằm ngoài phạm vi của bài viết này.
Đại lý tại LangChain
Mặc dù có sức mạnh to lớn nhưng Mô hình ngôn ngữ lớn thường thiếu các chức năng cơ bản như logic và tính toán. Họ có thể gặp khó khăn với những phép tính đơn giản mà ngay cả những chương trình máy tính nhỏ cũng có thể xử lý hiệu quả hơn.
Mặt khác, các đại lý có quyền truy cập vào các công cụ và bộ công cụ cho phép họ thực hiện các hành động cụ thể. Chẳng hạn, Tác nhân Python sử dụng PythonREPLTool để thực thi các lệnh Python. Mô hình ngôn ngữ lớn cung cấp hướng dẫn cho tác nhân về mã cần chạy.
Ví dụ
Ở đây để tạo tác nhân Python, chúng tôi sử dụng đối tượng create_python_agent() từ langchain. Để làm được điều này, chúng tôi chuyển Mô hình ngôn ngữ OpenAI của mình. Và công cụ chúng ta sẽ làm việc là PythonREPLTool() có khả năng chạy mã Python. Để có được kết quả đầu ra chi tiết, chúng tôi đặt chi tiết thành True. Cuối cùng, chúng ta chạy mô hình với đầu vào để tìm lũy thừa của 1,12 được nâng lên 1,19. Đầu ra được tạo ra là
Trong quá trình này, mô hình ngôn ngữ tạo mã Python, sau đó được tác nhân thực thi bằng cách sử dụng PythonREPLTool(). Câu trả lời kết quả được trả về bởi mô hình ngôn ngữ. Nhân viên không chỉ thực thi mã mà còn có thể tìm kiếm câu trả lời trên Google khi mô hình ngôn ngữ không thành công. Những thành phần mạnh mẽ này trong LangChain cho phép tạo ra các mô hình phức tạp với độ chính xác cao.
Phần kết luận
LangChain là một Python Framework mới được phát triển để xây dựng các ứng dụng với Mô hình ngôn ngữ mạnh mẽ. LangChain đã chứng tỏ một giao diện tiêu chuẩn có thể hoạt động với nhiều mô hình ngôn ngữ. Các Thành phần trong LangChain như Lời nhắc, Chuỗi và tác nhân có thể được xử lý để tạo ra các ứng dụng mạnh mẽ. Chúng tôi đã học cách sửa đổi Lời nhắc để làm cho Mô hình ngôn ngữ tạo ra các kết quả đầu ra khác nhau. Và cũng xem xét cách xâu chuỗi các mô hình ngôn ngữ khác nhau. Thậm chí đã làm việc với các Đại lý có khả năng chạy Mã Python, điều mà các Mô hình Ngôn ngữ Lớn không thể làm được.
Một số điểm chính rút ra từ bài viết này bao gồm:
- Việc hỗ trợ các mô hình khác nhau trong LangChain giúp bạn dễ dàng làm việc với các Mô hình ngôn ngữ khác nhau.
- Tạo tác nhân bằng LangChain để thực hiện các tác vụ mà Mô hình ngôn ngữ đơn giản không thể làm được
- Nhiều truy vấn có thể được đưa vào Mô hình ngôn ngữ bằng cách thay đổi Mẫu lời nhắc.
- Kết hợp Một hoặc nhiều Mô hình ngôn ngữ cùng với Thành phần chuỗi để có câu trả lời chính xác.
- Với LangChain, thời gian chuyển đổi từ Mô hình ngôn ngữ này sang Mô hình ngôn ngữ khác sẽ giảm đi đáng kể.
Các câu hỏi thường gặp
A. Ứng dụng LLM đề cập đến ứng dụng Quản lý học tập ngôn ngữ. Các ứng dụng này cung cấp các công cụ và tài nguyên để hỗ trợ việc học ngôn ngữ, bao gồm các tính năng như bài tập từ vựng, bài học ngữ pháp, hướng dẫn phát âm và theo dõi tiến độ.
A. LLM là viết tắt của Mô hình học ngôn ngữ trong LangChain. Đây là một mô hình cụ thể do LangChain phát triển, sử dụng các kỹ thuật xử lý ngôn ngữ tự nhiên (NLP) để nâng cao trải nghiệm học ngôn ngữ. LLM trong LangChain tập trung vào việc tối ưu hóa khả năng tiếp thu và thành thạo ngôn ngữ.
A. LangChain tương thích với nhiều mô hình ngôn ngữ, bao gồm cả những mô hình phổ biến như mô hình GPT-3, BERT và Transformer. Nền tảng này hỗ trợ nhiều kiến trúc và mô hình được đào tạo trước khác nhau có thể được tận dụng cho các tác vụ và ứng dụng liên quan đến ngôn ngữ.
A. LangChain có thể được sử dụng cho nhiều ứng dụng liên quan đến ngôn ngữ, chẳng hạn như dịch ngôn ngữ, phân tích cảm xúc, chatbot, trợ lý giọng nói, dạy kèm ngôn ngữ và tạo nội dung.
Đáp: Có, LangChain cung cấp cho các nhà phát triển sự linh hoạt để xây dựng và đào tạo Mô hình học ngôn ngữ (LLM) của riêng họ. Bằng cách sử dụng các tài nguyên và công cụ của nền tảng, các nhà phát triển có thể tùy chỉnh và tinh chỉnh các mô hình được thiết kế riêng cho nhu cầu học ngôn ngữ của họ.
Bài viết liên quan
28/01/2024
04/02/2024
05/02/2024
23/01/2024
19/01/2024
29/01/2024