মূল বিষয়বস্তুতে যান
সেমান্টিক কার্নেল ইন্টিগ্রেশন

সেমান্টিক কার্নেল পেমেন্ট ইন্টিগ্রেশন।

কোনও Semantic Kernel প্যাকেজের প্রয়োজন নেই। বাস্তব blockchain0x ক্লায়েন্টকে একটি KernelFunction (Python বা Java) এ মোড়ান, অথবা একটি C# KernelFunction থেকে REST API কল করুন। যেভাবেই হোক এজেন্ট USDC কে Base-এ সরায়।

সংক্ষিপ্ত উত্তর

কোনো সেমান্টিক কার্নেল প্যাকেজ নেই। পাইথনে আপনি প্রকৃত blockchain0x ক্লায়েন্টকে @kernel_function দিয়ে সাজানো একটি পদ্ধতিতে মোড়ান; C#-এ, যেখানে কোনো .NET SDK চালু হয়নি, একটি [KernelFunction] সরাসরি REST API কল করে। এটি আপনার কার্নেলে নিবন্ধন করুন, FunctionChoiceBehavior কে অটো সেট করুন, এবং এজেন্ট Base-এ USDC স্থানান্তর করতে পারে। চালানো মূল SDK গুলি হল Node, Python, Ruby, Go, এবং JVM।

কেন SEMANTIC KERNEL

এটি একমাত্র এন্টারপ্রাইজ-গ্রেড .NET এজেন্ট ফ্রেমওয়ার্ক।

যদি আপনার স্ট্যাক মাইক্রোসফট-আকৃতির (Azure, .NET, SQL Server, Teams, Copilot Studio) হয়, তবে Semantic Kernel প্রায় নিশ্চিতভাবেই সঠিক এজেন্ট ফ্রেমওয়ার্ক। এটি মাইক্রোসফট দ্বারা তৈরি, এটি Azure OpenAI, AKS, এবং Entra এর সাথে সংহত করে, এবং এটি .NET, Python, এবং Java তে প্রথম শ্রেণীর সমর্থন রয়েছে এমনভাবে যা অন্য কোন ফ্রেমওয়ার্ক মেলে না। এবং এটি ইতিমধ্যেই আপনাকে যা প্রয়োজন তা দেয়: একটি KernelFunction হল একটি পদ্ধতি, তাই পেমেন্ট সংযুক্ত করা হল একটি পদ্ধতি যা আপনি লেখেন, একটি প্যাকেজ নয় যা আপনি অপেক্ষা করেন।

এটাই কারণ এখানে ইনস্টল করার জন্য কোনো সেমান্টিক কার্নেল অ্যাডাপ্টার নেই। পাইথন এবং জাভাতে আপনি প্রকৃত blockchain0x SDK-কে একটি KernelFunction-এ মোড়ান; C#-এ, যেখানে কোনো .NET SDK এখনও চালু হয়নি, KernelFunction সরাসরি HttpClient-এর সাথে REST API-কে কল করে। আপনি অভিব্যক্তিমূলক আরগোনমিক্স বজায় রাখেন - সাজানো পদ্ধতি, অ্যাসিঙ্ক, অ্যাট্রিবিউট-ভিত্তিক প্যারামিটার যাচাইকরণ - এবং ট্র্যাক করার জন্য কোনো অ্যাডাপ্টার সংস্করণ নেই। আজকের বিদ্যমান মূল SDK গুলি হল Node, Python, Ruby, Go, এবং JVM।

ইনস্টলেশন

Semantic Kernel ইনস্টল করুন এবং, পাইথনে, মূল SDK।

কোনও blockchain0x Semantic Kernel প্যাকেজ যোগ করার জন্য নেই। পাইথন Semantic Kernel এবং প্রকৃত blockchain0x SDK ইনস্টল করে; C# Microsoft.SemanticKernel ইনস্টল করে এবং বিল্ট-ইন HttpClient দিয়ে REST API কল করে। জাভা Semantic Kernel for Java এবং com.blockchain0x:sdk-jvm SDK ব্যবহার করে।

ইনস্টল করুন - PYTHON
pip install semantic-kernel blockchain0x
ইনস্টল - .NET (Semantic Kernel শুধুমাত্র)
dotnet add package Microsoft.SemanticKernel
পরিবেশ ভেরিয়েবল
BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
BLOCKCHAIN0X_API_KEY=sk_test_...             # same key, the name the .NET REST example reads
OPENAI_API_KEY=sk-...

BLOCKCHAIN0X_API_KEY (Python ক্লায়েন্ট এটি পড়ে) আপনার ড্যাশবোর্ড থেকে একটি sk_test_ testnet বা sk_live_ mainnet কী; C# REST উদাহরণ একই মান BLOCKCHAIN0X_API_KEY থেকে পড়ে। OPENAI_API_KEY (অথবা Azure-হোস্টেড মডেলের জন্য AZURE_OPENAI_*) আপনার LLM কী। ওয়েবহুক হ্যান্ডলার অতিরিক্তভাবে BLOCKCHAIN0X_WEBHOOK_SECRET প্রয়োজন।

সম্পূর্ণ এজেন্ট উদাহরণগুলি

একটি ওয়ালেট KernelFunction, Python এবং C# এ।

Python বাস্তব blockchain0x ক্লায়েন্টকে @kernel_function দিয়ে সাজানো একটি পদ্ধতিতে মোড়ায়। C#, যেখানে কোন .NET SDK বিতরণ হয় না, একটি [KernelFunction] প্রকাশ করে যা সরাসরি HttpClient এর সাথে POST /v1/payments কল করে। উভয়ই কের্নেলে Wallet.send_usdc হিসাবে নিবন্ধিত হয়; শুধুমাত্র চারপাশের অনুষ্ঠান ভিন্ন।

PYTHON (plugin.py)
from semantic_kernel import Kernel
from semantic_kernel.functions import kernel_function
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

class WalletPlugin:
    @kernel_function(description="Send a USDC payment from an agent wallet.")
    def send_usdc(self, agent_id: str, to: str, amount_wei: str) -> str:
        # amount_wei is USDC base units (6 decimals): "10000" = 0.01 USDC
        return str(
            blockchain0x.payments.create(body={"agentId": agent_id, "to": to, "amountWei": amount_wei})
        )

kernel = Kernel()
kernel.add_plugin(WalletPlugin(), plugin_name="Wallet")
# Add your chat service, then let the model call Wallet.send_usdc.
.NET (WalletPlugin.cs)
using System.ComponentModel;
using System.Net.Http.Json;
using Microsoft.SemanticKernel;

// There is no .NET SDK, so a C# KernelFunction calls the REST API directly.
public class WalletPlugin
{
    private static readonly HttpClient Http = new()
    {
        BaseAddress = new Uri("https://api.blockchain0x.com"),
    };

    [KernelFunction, Description("Send a USDC payment from an agent wallet. amountWei is USDC base units (6 decimals).")]
    public async Task<string> SendUsdc(string agentId, string to, string amountWei)
    {
        Http.DefaultRequestHeaders.Authorization =
            new("Bearer", Environment.GetEnvironmentVariable("BLOCKCHAIN0X_API_KEY"));
        var res = await Http.PostAsJsonAsync("/v1/payments", new { agentId, to, amountWei });
        return await res.Content.ReadAsStringAsync();
    }
}

// builder.Plugins.AddFromType<WalletPlugin>("Wallet");

Register the function on the kernel, set FunctionChoiceBehavior to Auto, and when the user's message implies a payment the model calls Wallet.send_usdc with the agent id, recipient, and amount. amountWei is base units, so 0.01 USDC is "10000". The Python path returns the SDK result; the C# path returns the REST response body.

ওয়েবহুক হ্যান্ডলিং

পেমেন্ট ইভেন্ট গ্রহণের জন্য ASP.NET Core মিনিমাল API।

যখন একটি পেমেন্ট সেটেল হয়, Blockchain0x আপনার ওয়েবহুক URL-এ একটি স্বাক্ষরিত ইভেন্ট POST করে। কোন শিপ করা .NET যাচাইকরণকারী নেই, তাই হ্যান্ডলারটি নথিভুক্ত HMAC-এর বিরুদ্ধে হাতে যাচাই করে - যা একটি সহায়ক করবে। নিচে .NET উদাহরণ; পাইথন এবং জাভা তাদের নিজস্ব HMAC লাইব্রেরির সাথে একইভাবে যাচাই করে।

ওয়েবহুক.CS
using System.Security.Cryptography;
using System.Text;
using Microsoft.AspNetCore.Builder;

var app = WebApplication.CreateBuilder(args).Build();
var secret = Environment.GetEnvironmentVariable("BLOCKCHAIN0X_WEBHOOK_SECRET")!;

app.MapPost("/webhooks/payment", async (HttpRequest req) =>
{
    using var reader = new StreamReader(req.Body);
    var raw = await reader.ReadToEndAsync(); // RAW body - verify before parsing
    var sig = req.Headers["X-Blockchain0x-Signature"].ToString();
    var ts = req.Headers["X-Blockchain0x-Timestamp"].ToString();

    var parts = sig.Split(',').Select(p => p.Split('=', 2))
        .Where(p => p.Length == 2).ToDictionary(p => p[0], p => p[1]);
    var t = parts.GetValueOrDefault("t", ts);
    var v1 = parts.GetValueOrDefault("v1", sig);

    var want = Convert.ToHexString(new HMACSHA256(Encoding.UTF8.GetBytes(secret))
        .ComputeHash(Encoding.UTF8.GetBytes($"{t}.{raw}"))).ToLowerInvariant();
    var fresh = Math.Abs(DateTimeOffset.UtcNow.ToUnixTimeSeconds() - long.Parse(t)) <= 300;
    if (!fresh || !CryptographicOperations.FixedTimeEquals(
            Encoding.UTF8.GetBytes(want), Encoding.UTF8.GetBytes(v1)))
        return Results.Unauthorized();

    if (req.Headers["X-Blockchain0x-Event-Type"] == "payment.received")
        await RunFollowupAsync(); // USDC landed - do the next step
    return Results.Ok();
});

app.Run();

অ্যালগরিদমটি t.rawBody স্ট্রিংয়ের উপর HMAC-SHA256, একটি 300-সেকেন্ডের পুনরায় প্লে উইন্ডো, এবং একটি ধ্রুবক-সময়ের তুলনা। সিগনেচার অক্ষুণ্ণ রাখতে StreamReader-এর মাধ্যমে কাঁচা শরীরটি পড়ুন; ডেসিরিয়ালাইজ করবেন না তারপর পুনরায় সিরিয়ালাইজ করুন। চালানো ইভেন্টগুলি হল payment.received, payment.sent, wallet.deployed, এবং webhook.test। উৎপাদনে ওয়েবহুক প্রায়শই একটি পৃথক ASP.NET Core পরিষেবার মতো চলে যা এজেন্টের সাথে একটি ডেটাবেস শেয়ার করে যাতে উভয়ই সমন্বয় করতে পারে।

সূত্র এবং ডক্স

SDK এবং REST পৃষ্ঠ খোলা। এগুলি পড়ুন।

এখন ক্লোন করার জন্য কোন Semantic Kernel স্টার্টার প্যাকেজ নেই - উপরের রেসিপিগুলি ইন্টিগ্রেশন। blockchain0x মূল SDK (Node, Python, Ruby, Go) GitHub এ ওপেন সোর্স, এবং তাদের পদ্ধতি পৃষ্ঠ এবং REST রুটগুলি C# উদাহরণ কলগুলি ডকসে নথিভুক্ত।

docs.blockchain0x.com/docs/overview

SDK পদ্ধতি পৃষ্ঠ এবং REST রুটগুলি ডকস এ নথিভুক্ত। Base Sepolia এর বিরুদ্ধে একটি sk_test_ কী দিয়ে শুরু করুন, তারপর যখন KernelFunction আপনার প্রত্যাশা অনুযায়ী কাজ করে তখন sk_live_ এ স্যুইচ করুন।

সাধারণ ফাঁদ

পাঁচটি Semantic Kernel-নির্দিষ্ট ফাঁদ এড়ানো উচিত।

সেমান্টিক কার্নেলের প্লাগইন মডেল পরিষ্কার কিন্তু এতে ক্রস-ভাষা এবং আচরণ-ডিফল্ট সমস্যা রয়েছে। এগুলি আগে থেকেই জানা থাকলে সময় বাঁচায়।

PITFALL 1

কোনো ভাষায় সেমান্টিক কার্নেল প্যাকেজ নেই

কোনো NuGet, PyPI, বা Maven অ্যাডাপ্টার নেই। চালানো মূল SDK গুলি হল Node, Python, Ruby, Go, এবং JVM - .NET নয়। তাই একটি পাইথন কার্নেল blockchain0x পাইথন ক্লায়েন্টকে @kernel_function-এ মোড়ায়, একটি জাভা কার্নেল com.blockchain0x:sdk-jvm SDK ব্যবহার করে, এবং একটি C# কার্নেল সরাসরি একটি KernelFunction (উপরের মতো) থেকে REST API কল করে। তিনটি সবই কয়েকটি লাইন।

PITFALL 2

FunctionChoiceBehavior স্বয়ংক্রিয় হতে হবে

সেমান্টিক কার্নেল শুধুমাত্র তখন প্লাগইন ফাংশনগুলি আহ্বান করে যখন FunctionChoiceBehavior প্রম্পট-নির্বাহী সেটিংসে অটোতে সেট করা হয়। ডিফল্ট হল কিছুই নয়, তাই মডেলটি কখনও আপনার ওয়ালেট ফাংশনকে কল করে না যতই স্পষ্টভাবে ব্যবহারকারী জিজ্ঞাসা করে। যদি এজেন্টটি সম্পূর্ণরূপে ফাংশনটি উপেক্ষা করে, তাহলে প্রথমে এটি পরীক্ষা করুন।

PITFALL 3

পরিমাণগুলি USDC বেস ইউনিট, স্ট্রিং হিসাবে

The payments call takes amountWei: a string of USDC base units (6 decimals), so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the function argument as a string in any language. payments.create also does not retry by default and can answer 503 until the chain adapter is wired for your network - return a clear message rather than letting the agent loop.

PITFALL 4

এজেন্টগুলির মধ্যে প্লাগইনের পরিধি

শুধুমাত্র সেই এজেন্টের কর্ণেলে ওয়ালেট ফাংশন নিবন্ধন করুন যা খরচের কর্তৃত্ব ধারণ করা উচিত। প্লাগইনটি গ্লোবাল নয় - একটি এজেন্ট যার কর্ণেলে এটি নেই তা এটি কল করতে পারে না। একটি পর্যালোচক এজেন্টকে একটি কর্ণেল দিন যার মধ্যে ওয়ালেট ফাংশন নেই, অথবা প্রতি এজেন্টের জন্য অনুমোদিত ফাংশনগুলি সীমাবদ্ধ করুন, যাতে অর্থ একটি ভূমিকার সাথে থাকে।

PITFALL 5

কাঁচা শরীরের বিরুদ্ধে ওয়েবহুক যাচাই করুন

কাঁচা অনুরোধের শরীর পড়ুন এবং ডেসিরিয়ালাইজ করার আগে যাচাই করুন - HMAC সঠিক বাইটগুলি কভার করে, তাই একটি পার্স-তারপর-রিসিরিয়ালাইজ রাউন্ড ট্রিপ এটি ভেঙে দেয়। নিচের .NET হ্যান্ডলারটি নথিভুক্ত অ্যালগরিদমটি বাস্তবায়ন করে: HMAC-SHA256 t.rawBody এর উপর, 300 সেকেন্ডের উইন্ডো, এবং একটি ধ্রুবক-সময় তুলনা। পাইথন এবং জাভা তাদের নিজস্ব HMAC লাইব্রেরি দিয়ে একইভাবে যাচাই করে।

প্রায়শই জিজ্ঞাসিত

তিনটি Semantic Kernel-নির্দিষ্ট প্রশ্ন।

ইনস্টল করার জন্য কি একটি Semantic Kernel প্যাকেজ আছে (NuGet, PyPI, বা Maven)?

না। সৎ পথ আপনার ভাষার উপর নির্ভর করে। Python Semantic Kernel বাস্তব blockchain0x Python ক্লায়েন্টকে @kernel_function এ মোড়ায়, যেমন উপরে দেখানো হয়েছে। Java Semantic Kernel com.blockchain0x:sdk-jvm SDK ব্যবহার করে একটি KernelFunction এর ভিতরে। C# এবং অন্যান্য .NET ভাষার কোনও blockchain0x SDK নেই - বিতরণ করা মূল SDK গুলি হল Node, Python, Ruby, Go, এবং JVM - তাই একটি .NET KernelFunction সরাসরি REST API কল করে, যা উপরে দেখানো হয়েছে। একমাত্র বিতরণ করা ফ্রেমওয়ার্ক প্যাকেজগুলি হল blockchain0x-langchain এবং blockchain0x-crewai (Python) এবং @blockchain0x/mcp সার্ভার।

.NET SDK গ্যাপ কেন আছে, এবং কি এটি একটি সমস্যা?

এটি আজ SDK রোডম্যাপের যেখানে: নোড, পাইথন, রুবি, গো, এবং JVM শিপ, .NET এখনও নয়। এটি একটি বাধা নয়। REST API হল HTTPS এর উপর সাধারণ JSON বেয়ার-টোকেন অথ সহ, এবং একটি C# KernelFunction যা POST /v1/payments (উপরের) কল করে তা HttpClient এর সাথে কয়েকটি লাইনের। যদি একটি প্রথম শ্রেণীর .NET SDK আপনার জন্য গুরুত্বপূর্ণ হয়, আমাদের জানান এবং আমরা এটি চাহিদার বিরুদ্ধে মূল্যায়ন করব।

এটি কি এজেন্ট ফ্রেমওয়ার্ক এবং Microsoft 365 কো-পাইলটের সাথে কাজ করে?

হ্যাঁ। ওয়ালেট ফাংশনটি একটি সাধারণ সেমান্টিক কার্নেল ফাংশন, তাই এটি একক ChatCompletionAgent রান এবং AgentGroupChat সমন্বয়ে কাজ করে - এটি কেবল বিলিং এজেন্টের কার্নেলে নিবন্ধন করুন এবং অন্যদের পেমেন্ট সেটেল হওয়ার পরে কাজ করতে দিন। Microsoft 365 Copilot এক্সটেনশনগুলি যা Semantic Kernel-এর অধীনে চলে সেগুলি একইভাবে নিবন্ধন করতে পারে; আপনার নিজস্ব UI দিয়ে ব্যবহারকারীর কাছে পেমেন্টটি পৃষ্ঠায় আনুন। কোন কো-পাইলট-নির্দিষ্ট প্যাকেজ নেই; এটি একই রেসিপি।

আপনার SK এজেন্টে বিলিং যোগ করুন।

একটি KernelFunction বাস্তব ক্লায়েন্ট বা REST API এর উপর, ইনস্টল করার জন্য কোন প্যাকেজ নেই। শুরু করতে বিনামূল্যে।