Nè mọi người! Tôi là Nataraj , và cũng giống như bạn, tôi rất thích thú với những tiến bộ gần đây của trí tuệ nhân tạo. Nhận thấy rằng tôi cần phải theo kịp mọi sự phát triển đang diễn ra, tôi quyết định bắt tay vào hành trình học tập cá nhân, thế là 100 ngày AI đã ra đời! Với loạt bài này, tôi sẽ tìm hiểu về LLM và chia sẻ ý tưởng, thử nghiệm, ý kiến, xu hướng và bài học thông qua các bài đăng trên blog của mình. Bạn có thể theo dõi hành trình trên HackerNoon tại đây hoặc trang web cá nhân của tôi tại đây . Trong bài viết hôm nay, chúng ta sẽ tìm cách xây dựng Hạt nhân ngữ nghĩa với sự trợ giúp của GPT-4.
Semantic Kernel là SDK mã nguồn mở của Microsoft giúp các nhà phát triển tạo ra các ứng dụng AI bao gồm chatbot, RAG, Copilots & Agent. Nó tương tự như những gì langchain làm. Có lẽ chúng ta có thể gọi nó là câu trả lời của Microsoft cho langchain.
Nó được thiết kế để làm cho phần mềm hiện có có thể mở rộng và dễ dàng tiếp cận các tính năng AI. Nó cũng được thiết kế để dự đoán rằng các ứng dụng muốn cập nhật mô hình AI của họ lên phiên bản mới nhất và tốt nhất theo thời gian.
Mặc dù không gian đang phát triển rất nhanh chóng nhưng đây là một số định nghĩa cần ghi nhớ khi chúng ta khám phá Hạt nhân ngữ nghĩa.
Để giải thích cách hoạt động của Semantic Kernel, hãy lấy một ví dụ về việc lấy một đoạn văn bản và chuyển nó thành tweet 140 ký tự. Nhưng chúng ta sẽ làm điều này bằng Semantic Kernel. Chúng tôi đã thực hiện tóm tắt tương tự trong các bài viết trước tại đây .
Tôi sẽ sử dụng thư viện python của Semantic Kernel, nhưng vì Semantic Kernel được tạo bởi Microsoft nên bạn cũng có thể thực hiện việc này trong C#. Kiểm tra tài liệu công khai của Microsoft về cách thực hiện việc này.
Bên dưới, chúng tôi đang khởi tạo hạt nhân ngữ nghĩa và thiết lập dịch vụ hoàn thành văn bản của nó bằng cách yêu cầu nó sử dụng mô hình gpt-4 của OpenAI làm LLM để sử dụng cho việc hoàn thành văn bản.
import semantic_kernel as sk from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, OpenAIChatCompletion import os from IPython.display import display, Markdown import asyncio from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file api_key = os.environ['OPENAI_API_KEY'] kernel = sk.Kernel() kernel.add_text_completion_service("openai", OpenAIChatCompletion("gpt-4",api_key)) print("Kernel Initiated")
Trong thế giới Hạt nhân ngữ nghĩa, chúng ta có một khái niệm về hàm ngữ nghĩa khác với hàm gốc. Hàm gốc là các hàm thông thường mà chúng ta viết bằng bất kỳ ngôn ngữ lập trình nào. Các hàm ngữ nghĩa là sự đóng gói của các Lời nhắc LLM có thể lặp lại mà Kernel có thể sắp xếp. Bạn sẽ hiểu rõ hơn về chức năng ngữ nghĩa là gì trong bước tiếp theo mà chúng ta sẽ viết nó.
Ở đây chúng ta tạo một dấu nhắc sk_prompt tóm tắt kết nối trong ít hơn 140 ký tự (đó là mục tiêu của chúng ta trong bài tập này). Sau đó, chúng tôi chuyển lời nhắc làm đầu vào để tạo một hàm ngữ nghĩa với kernel và store, hàm này trả về cho chúng tôi đối tượng summary_function đại diện cho hàm ngữ nghĩa mà chúng tôi đã tạo và có thể được truy cập nhiều lần thông qua kernel. Lưu ý rằng khi tạo một hàm ngữ nghĩa, chúng tôi đang sử dụng lời nhắc của khách hàng và cũng cung cấp thông tin cấu hình LLM như max_tokens, nhiệt độ, v.v.. Bây giờ, hãy quay lại hình ảnh trước đó của các hàm gốc và hàm ngữ nghĩa và nó sẽ có ý nghĩa hơn.
sk_prompt = """ {{$input}} Summarize the content above in less than 140 characters. """ summary_function = kernel.create_semantic_function(prompt_template = sk_prompt, description="Summarizes the input to length of an old tweet.", max_tokens=200, temperature=0.1, top_p=0.5) print("A semantic function for summarization has been registered.")
Bây giờ chúng ta tạo văn bản mà chúng ta muốn tóm tắt bằng cách sử dụng biến sk_input và gọi hàm ngữ nghĩa thông qua kernal rồi hiển thị kết quả.
sk_input = """ Let me illustrate an example. Many weekends, I drive a few minutes from my house to a local pizza store to buy a slice of Hawaiian pizza from the gentleman that owns this pizza store. And his pizza is great, but he always has a lot of cold pizzas sitting around, and every weekend some different flavor of pizza is out of stock. But when I watch him operate his store, I get excited, because by selling pizza, he is generating data. And this is data that he can take advantage of if he had access to AI. AI systems are good at spotting patterns when given access to the right data, and perhaps an AI system could spot if Mediterranean pizzas sell really well on a Friday night, maybe it could suggest to him to make more of it on a Friday afternoon. Now you might say to me, "Hey, Andrew, this is a small pizza store. What's the big deal?" And I say, to the gentleman that owns this pizza store, something that could help him improve his revenues by a few thousand dollars a year, that will be a huge deal to him. """ # using async to run the semantic function async def run_summary_async(): summary_result = await kernel.run_async(summary_function, input_str=sk_input) display(summary_result) asyncio.run(run_summary_async())
Đây là kết quả tôi nhận được:
AI có thể phân tích dữ liệu bán hàng để giúp chủ cửa hàng pizza nhỏ tối ưu hóa hàng tồn kho của mình, có khả năng tăng doanh thu hàng năm.
Hạt nhân ngữ nghĩa có nhiều khả năng hơn như sử dụng các Hàm ngữ nghĩa & Hàm gốc cùng nhau và được thiết kế để tạo ra các ứng dụng AI mạnh mẽ. Tôi sẽ viết nhiều hơn về họ trong các bài viết tiếp theo.
Vậy là xong Ngày thứ 8 trong 100 ngày của AI.
Tôi viết một bản tin có tên Trên mức trung bình, nơi tôi nói về những hiểu biết sâu sắc thứ hai đằng sau mọi thứ đang diễn ra trong ngành công nghệ lớn. Nếu bạn làm trong lĩnh vực công nghệ và không muốn ở mức trung bình, hãy đăng ký theo dõi .
Theo dõi tôi trên Twitter , LinkedIn hoặc ** HackerNoon ** để biết thông tin cập nhật mới nhất về 100 ngày của AI. Nếu bạn làm trong lĩnh vực công nghệ, bạn có thể muốn tham gia cộng đồng các chuyên gia công nghệ của tôi tại đây .
Ngày 7 trước: Làm cách nào để xây dựng Chat-GPT cho Dữ liệu của bạn bằng Langchain?