DEV Community

Cover image for Semantic Kernel là gì? SDK của Microsoft cho điều phối AI
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

Semantic Kernel là gì? SDK của Microsoft cho điều phối AI

Nếu bạn xây dựng phần mềm trên nền tảng Microsoft và muốn thêm AI mà không cần chạy thêm một dịch vụ Python riêng, Semantic Kernel là SDK mã nguồn mở của Microsoft dành cho việc kết nối mã, API hiện có và các mô hình ngôn ngữ lớn. Hướng dẫn này tập trung vào cách triển khai: kernel, plugin, function calling và cách hỗ trợ đặc tả OpenAPI giúp biến REST API thành công cụ mà mô hình có thể gọi.

Dùng thử Apidog hôm nay

Semantic Kernel thực sự là gì

Semantic Kernel (SK) là một bộ công cụ phát triển nhẹ, mã nguồn mở từ Microsoft để xây dựng tác nhân AI và tích hợp mô hình vào ứng dụng. Bạn có thể xem SK như một lớp middleware giữa ứng dụng và mô hình:

  1. Ứng dụng gửi yêu cầu hoặc prompt vào kernel.
  2. Kernel gọi mô hình đã cấu hình.
  3. Mô hình quyết định có cần gọi function/tool hay không.
  4. Kernel chạy function tương ứng trong mã của bạn hoặc gọi API bên ngoài.
  5. Kết quả được trả lại cho mô hình để tiếp tục xử lý.

SK đáng chú ý ở ba điểm:

  • Đa ngôn ngữ thực tế: có SDK chính thức cho C#/.NET, Python và Java, với cam kết ổn định phiên bản 1.0+.
  • Không khóa vào một mô hình: có thể dùng OpenAI, Azure OpenAI và các nhà cung cấp khác thông qua connector.
  • Phù hợp môi trường doanh nghiệp: hỗ trợ telemetry, hooks, filters, logging và kiểm soát những gì AI được phép thực hiện.

Nếu backend của bạn là .NET hoặc Java, SK giúp bạn thêm AI trực tiếp vào codebase hiện tại thay vì phải dựng thêm một service Python chỉ để điều phối tác nhân.

Kernel, plugin và hàm

Đối tượng trung tâm của SK là kernel. Hãy coi kernel như một dependency-injection container dành cho AI. Bạn đăng ký model connector, plugin và các function vào kernel, sau đó để kernel điều phối prompt, gọi mô hình, gọi function và trả kết quả.

Một plugin là một nhóm function được đặt tên. Một function là một khả năng cụ thể mà mô hình có thể gọi.

SK hỗ trợ hai nhóm function chính:

  • Native functions: phương thức trong mã của bạn, ví dụ một method C# hoặc một hàm Python.
  • Prompt functions: prompt template gọi lại mô hình, thường dùng cho tóm tắt, phân loại hoặc viết lại văn bản.

Ví dụ tối thiểu trong C#:

var builder = Kernel.CreateBuilder();

builder.AddOpenAIChatCompletion(
    modelId: "gpt-4o",
    apiKey: apiKey
);

builder.Plugins.AddFromType<LightsPlugin>("Lights");

Kernel kernel = builder.Build();

var result = await kernel.InvokePromptAsync(
    "Turn the kitchen light blue"
);
Enter fullscreen mode Exit fullscreen mode

Ví dụ plugin:

using Microsoft.SemanticKernel;
using System.ComponentModel;

public class LightsPlugin
{
    [KernelFunction("change_light_state")]
    [Description("Change the color and state of a room light.")]
    public string ChangeLightState(
        [Description("Room name, for example kitchen or bedroom.")]
        string room,
        [Description("Light color, for example blue, red, or white.")]
        string color,
        [Description("Whether the light should be on.")]
        bool isOn
    )
    {
        return $"Light in {room} is now {(isOn ? "on" : "off")} and set to {color}.";
    }
}
Enter fullscreen mode Exit fullscreen mode

Điểm quan trọng: mô hình không tự chạy code. Nó chỉ yêu cầu gọi function. Kernel mới là thành phần thực thi function, thu kết quả và đưa lại cho mô hình.

Mô hình OpenAPI-thành-plugin

Tính năng thực tế nhất của SK là khả năng nhập OpenAPI spec và biến mỗi operation thành một function có thể gọi được. Điều này phù hợp khi bạn đã có REST API nội bộ và muốn tác nhân AI sử dụng chúng mà không viết wrapper thủ công.

Trong C#, bạn dùng ImportPluginFromOpenApiAsync:

await kernel.ImportPluginFromOpenApiAsync(
    pluginName: "lights",
    uri: new Uri("https://example.com/v1/swagger.json"),
    executionParameters: new OpenApiFunctionExecutionParameters()
    {
        EnablePayloadNamespacing = true
    }
);
Enter fullscreen mode Exit fullscreen mode

Trong Python, API tương ứng là add_plugin_from_openapi.

Luồng xử lý thường là:

  1. SK đọc OpenAPI spec.
  2. SK trích xuất operationId, description, parameter schema và response schema.
  3. Mỗi operation được expose thành một function cho mô hình.
  4. Mô hình chọn function phù hợp và truyền arguments.
  5. SK tạo HTTP request, áp dụng xác thực nếu có, gửi request và đọc response.

SK hỗ trợ OpenAPI 2.0 và 3.0, đồng thời có thể hạ cấp đặc tả 3.1 xuống 3.0 nếu khả thi.

Checklist để OpenAPI spec hoạt động tốt với AI

OpenAPI viết cho con người chưa chắc đã đủ rõ cho mô hình. Trước khi nhập spec vào SK, hãy kiểm tra:

  • operationId phải rõ nghĩa, ví dụ getCustomerById, không dùng tên chung chung như getData.
  • description nên giải thích khi nào dùng operation đó.
  • Parameter cần có type, enum và description cụ thể.
  • Tránh quá nhiều endpoint trong một plugin nếu không cần thiết.
  • Response schema nên chính xác để mô hình hiểu dữ liệu trả về.
  • Authentication nên được mô tả rõ trong spec hoặc xử lý nhất quán ở execution layer.

Ví dụ operation dễ hiểu hơn cho mô hình:

paths:
  /customers/{customerId}:
    get:
      operationId: getCustomerById
      summary: Get customer profile by customer ID
      description: Use this operation when you need profile details for a specific customer.
      parameters:
        - name: customerId
          in: path
          required: true
          description: Unique customer identifier.
          schema:
            type: string
      responses:
        "200":
          description: Customer profile
Enter fullscreen mode Exit fullscreen mode

Chất lượng spec ảnh hưởng trực tiếp đến chất lượng tool call của tác nhân.

Tác nhân (Agents) và lập kế hoạch (planning)

Semantic Kernel ban đầu có các planner rõ ràng để chia mục tiêu thành nhiều bước. Với các mô hình hiện đại, hướng tiếp cận đáng tin cậy hơn là function calling, nơi mô hình tự quyết định function nào cần gọi và thứ tự gọi.

Trên nền đó, SK bổ sung Agent Framework để xây dựng tác nhân và mô hình đa tác nhân, với:

  • trạng thái theo phiên (session-based state),
  • agentic loops,
  • hỗ trợ Model Context Protocol (MCP),
  • khả năng kết nối công cụ bên ngoài.

Nếu bạn đang chọn framework, có thể so sánh nhanh như sau:

Framework Ngôn ngữ chính Mô hình điều phối Phù hợp nhất
Semantic Kernel C#/.NET, Python, Java Gọi hàm + tác nhân Các đội .NET và doanh nghiệp
LangGraph Python, JS Đồ thị trạng thái rõ ràng Các luồng tác nhân phức tạp, phân nhánh
Google ADK Python Mô hình tác nhân + công cụ Nền tảng Google Cloud và Gemini
OpenAI Agents SDK Python, JS Tác nhân + chuyển giao Ứng dụng tập trung vào OpenAI

Không có framework nào tốt hơn tuyệt đối. Lựa chọn phụ thuộc vào ngôn ngữ backend, nhà cung cấp mô hình và mức kiểm soát bạn muốn đối với flow thực thi.

Semantic Kernel phù hợp ở đâu với Microsoft Agent Framework

Microsoft đã giới thiệu Microsoft Agent Framework (MAF), được tài liệu mô tả là người kế nhiệm trực tiếp của cả Semantic Kernel và AutoGen, do cùng nhóm phát triển. MAF kết hợp abstraction tác nhân của AutoGen với các tính năng doanh nghiệp của SK, đồng thời bổ sung workflow dựa trên đồ thị cho điều phối đa tác nhân.

Cách hiểu thực tế:

  • Ứng dụng SK hiện có vẫn ổn: SK ổn định, được hỗ trợ và giữ cam kết không phá vỡ tương thích ngược ở phiên bản 1.0+.
  • Dự án tác nhân mới nên xem MAF trước: Microsoft đang hướng phát triển mới vào Agent Framework và có tài liệu di chuyển từ SK.
  • Mô hình OpenAPI-thành-plugin vẫn có giá trị: việc cho tác nhân truy cập REST API qua spec là mô hình chung mà cả hai hướng đều sử dụng.

Nếu bạn đã có code SK, không cần vội di chuyển. Nếu bắt đầu một dự án mới, hãy đọc tài liệu MAF hiện tại trước khi quyết định.

Khi nào nên sử dụng Semantic Kernel

Nên chọn SK khi:

  • Backend chính của bạn là .NET hoặc Java.
  • Bạn muốn thêm AI orchestration mà không tách sang Python service.
  • Bạn đã có nhiều REST API và muốn expose chúng qua OpenAPI.
  • Bạn cần telemetry, hooks, filters và auditability.
  • Bạn muốn giữ khả năng đổi model provider mà không viết lại toàn bộ ứng dụng.

Có thể cân nhắc lựa chọn khác khi:

  • Team của bạn chỉ dùng Python.
  • Bạn cần mô hình đa tác nhân mới nhất.
  • Bạn muốn workflow dạng graph rõ ràng ngay từ đầu.

Trong trường hợp đó, Microsoft Agent Framework hoặc các thư viện ưu tiên graph có thể phù hợp hơn.

Kiểm thử các API đằng sau tác nhân Semantic Kernel

SK không thay thế API của bạn. Nó chỉ gọi API. Vì vậy, chất lượng tác nhân phụ thuộc nhiều vào chất lượng endpoint và OpenAPI spec mà bạn cung cấp.

Đây là nơi Apidog phù hợp trong workflow.

Một quy trình thực tế:

  1. Thiết kế OpenAPI spec trước

Định nghĩa endpoint, schema, parameter, auth và response trước khi import vào SK.

  1. Validate spec

Kiểm tra operationId, description, enum, required fields và response schema.

  1. Test từng endpoint

Đảm bảo endpoint trả về đúng schema mà mô hình sẽ dựa vào.

  1. Mock API khi backend chưa sẵn sàng

Bạn có thể tạo API giả lập cho endpoint chưa hoàn thiện, hoặc giả lập endpoint LLM để tránh tốn token khi debug vòng lặp điều phối. Xem thêm cách giả lập các lệnh gọi API.

  1. Thêm assertion cho response

Dùng các xác nhận API để phát hiện khi backend thay đổi schema hoặc field quan trọng.

  1. Tách biến môi trường

Không hard-code LLM key hoặc API token. Tách dev, staging và production.

Ví dụ: nếu tác nhân SK gọi endpoint lấy thông tin khách hàng, bạn nên test riêng endpoint đó trước khi cho mô hình dùng:

GET /customers/{customerId}
Authorization: Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

Các assertion nên kiểm tra:

{
  "customerId": "string",
  "name": "string",
  "status": "active"
}
Enter fullscreen mode Exit fullscreen mode

Đây vẫn là công việc API thông thường, nhưng cần làm trước khi tác nhân được phép gọi API thật. Nếu muốn đi sâu hơn, bài kiểm thử các lệnh gọi công cụ của tác nhân bằng Apidog trình bày chi tiết hơn.

Các câu hỏi thường gặp

Semantic Kernel có miễn phí và mã nguồn mở không?

Có. Semantic Kernel là mã nguồn mở và được Microsoft xuất bản trên GitHub theo giấy phép cho phép. Bạn trả tiền cho việc sử dụng mô hình như OpenAI hoặc Azure OpenAI, không phải cho bản thân SK.

Semantic Kernel hỗ trợ những ngôn ngữ nào?

SK hỗ trợ C#/.NET, Python và Java. C# là SDK trưởng thành nhất, nhưng Python và Java cũng có các tính năng kernel cốt lõi, plugin và nhập OpenAPI.

Semantic Kernel sử dụng đặc tả OpenAPI như thế nào?

Bạn nhập spec bằng ImportPluginFromOpenApiAsync trong C# hoặc add_plugin_from_openapi trong Python. SK phân tích spec, biến mỗi operation thành function có thể gọi và cung cấp metadata cho mô hình. Vì mô hình dựa vào mô tả trong spec, bạn nên validate và test endpoint trước với Apidog.

Tôi nên sử dụng Semantic Kernel hay Microsoft Agent Framework?

Nếu bạn đã có ứng dụng SK, hãy tiếp tục dùng vì SK vẫn được hỗ trợ và ổn định. Nếu bắt đầu dự án mới, hãy xem Microsoft Agent Framework trước vì Microsoft đang định vị nó là người kế nhiệm. Với API mà tác nhân gọi, bạn có thể tham khảo cách kiểm thử ChatGPT API bằng Apidog.

Tóm lại

Semantic Kernel cung cấp một cách thực tế để thêm AI orchestration vào hệ sinh thái Microsoft: kernel kết nối mô hình với code, plugin expose function cho mô hình, và OpenAPI import biến REST API hiện có thành công cụ tác nhân có thể gọi. SK ổn định và đã được dùng trong môi trường sản xuất, trong khi Microsoft Agent Framework là hướng phát triển mới hơn cho dự án tác nhân mới.

Dù chọn SK hay MAF, phần API bên dưới vẫn phải chắc: spec rõ, endpoint đúng, response có schema và auth được kiểm soát. Để thiết kế, mock và kiểm thử các API mà tác nhân phụ thuộc, hãy tải Apidog và xây dựng hợp đồng API trước khi cho tác nhân gọi thật.

Top comments (0)