Semantic Kernel পেমেন্ট ইন্টিগ্ৰেশন।
কোনো Semantic Kernel পেকেজৰ প্ৰয়োজন নাই। বাস্তৱ blockchain0x ক্লায়েন্টক এখন KernelFunction (Python বা Java)ত মুড়ি দিয়ক, অথবা C# KernelFunctionৰ পৰা REST APIক কল কৰক। যিকোনো পথত এজেন্টে Baseত USDC স্থানান্তৰ কৰে।
Semantic Kernel পেকেজ নাই। পাইথনত আপুনি বাস্তৱ blockchain0x ক্লায়েন্টটো @kernel_functionৰ সৈতে সজোৱা এটা পদ্ধতিত মুঠ কৰে; C# ত, য'ত কোনো .NET SDK পঠিওৱা নহয়, এটা [KernelFunction] REST APIক সোজাকৈ কল কৰে। ইয়াক আপোনাৰ কৰ্ণেলত ৰেজিষ্টাৰ কৰক, FunctionChoiceBehaviorক Auto ত স্থাপন কৰক, আৰু এজেন্ট Base ত USDC স্থানান্তৰ কৰিব পাৰে। পঠিওৱা মূল SDK সমূহ হৈছে Node, Python, Ruby, Go, আৰু JVM।
একমাত্ৰ উদ্যোগ-মানৰ .NET এজেন্ট ফ্ৰেমৱৰ্ক।
যদি আপোনাৰ ষ্টেক Microsoft-আকৃতিত (Azure, .NET, SQL Server, Teams, Copilot Studio) হয়, তেন্তে Semantic Kernel প্ৰায় নিশ্চিতভাৱে সঠিক এজেণ্ট ফ্ৰেমৱৰ্ক। ই Microsoftৰ দ্বাৰা নিৰ্মিত, ই Azure OpenAI, AKS, আৰু Entraৰ সৈতে একত্ৰিত হয়, আৰু ই .NET, Python, আৰু Javaৰ মাজত প্ৰথম-শ্ৰেণীৰ সমৰ্থন প্ৰদান কৰে যি অন্য কোনো ফ্ৰেমৱৰ্কৰ সৈতে মিলে। আৰু ই ইতিমধ্যে আপোনাক যি প্ৰয়োজন তাত প্ৰদান কৰে: এটা KernelFunction মাত্ৰ এটা পদ্ধতি, সেয়ে পেমেন্টৰ সংযোগ কৰাটো এটা পদ্ধতি যি আপুনি লিখে, এটা পেকেজ নহয় যাৰ বাবে আপুনি অপেক্ষা কৰে।
সেয়া হৈছে কিয় Semantic Kernel এডাপ্টাৰ ইনষ্টল কৰিবলৈ নাই। Python আৰু Javaত আপুনি বাস্তৱ blockchain0x SDKক KernelFunctionত মুড়ি দিয়ে; C#ত, য'ত কোনো .NET SDK এতিয়ালৈকে নাহে, KernelFunctionয়ে REST APIক HttpClientৰ সৈতে সোজাকৈ কল কৰে। আপুনি বাচলিক আৰগনমিক্স বজাই ৰাখে - সজীৱ পদ্ধতি, async, গুণ-ভিত্তিক পেৰামিটাৰ ভেলিডেশ্বন - আৰু কোনো এডাপ্টাৰ সংস্কৰণৰ পৰ্যবেক্ষণ কৰিবলৈ নাই। আজিৰ দিনত থকা মূল SDKসমূহ হৈছে Node, Python, Ruby, Go, আৰু JVM।
Semantic Kernel ইনষ্টল কৰক আৰু, Pythonত, মূল SDK।
যোগ কৰিবলৈ blockchain0x Semantic Kernel পেকেজ নাই। পাইথন Semantic Kernelৰ লগতে বাস্তৱ blockchain0x SDK স্থাপন কৰে; C# Microsoft.SemanticKernel স্থাপন কৰে আৰু বিল্ট-ইন HttpClientৰ সৈতে REST APIক কল কৰে। জাভা Javaৰ বাবে Semantic Kernel ব্যৱহাৰ কৰে আৰু com.blockchain0x:sdk-jvm SDK।
pip install semantic-kernel blockchain0xdotnet add package Microsoft.SemanticKernelBLOCKCHAIN0X_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 চাবি। Webhook হেণ্ডলাৰ লগতে BLOCKCHAIN0X_WEBHOOK_SECRETৰ প্ৰয়োজন।
এখন ৱালেট KernelFunction, Python আৰু C# ত।
Python বাস্তৱ blockchain0x ক্লায়েন্টক @kernel_functionৰে সজ্জিত এক পদ্ধতিত আবৰি ৰাখে। C#, য'ত কোনো .NET SDK নাহে, এটা [KernelFunction] উন্মোচন কৰে যি POST /v1/paymentsক HttpClientৰ সৈতে সোজাকৈ কল কৰে। দুয়োটা কৰ্ণেলত Wallet.send_usdc হিচাপে পঞ্জীয়ন হয়; কেৱল চাৰিওকাষৰ অনুষ্ঠান ভিন্ন।
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.
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 উদাহৰণ; Python আৰু Java একে ভাবে নিজৰ HMAC লাইব্ৰেৰীৰ সৈতে পৰীক্ষা কৰে।
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();এলগৰিদমটো HMAC-SHA256 হৈছে t.rawBodyৰ ওপৰত, 300-ছেকেণ্ডৰ পুনৰ খেলা জাননী, আৰু এটা ধ্ৰুৱক-সময় তুলনা। স্বাক্ষৰ অক্ষত থাকিবলৈ StreamReaderৰ জৰিয়তে কাঁচা বডী পঢ়ক; পুনৰ-ডিছাৰিয়েলাইজ নকৰিব। পঠিওৱা ইভেন্টসমূহ হৈছে payment.received, payment.sent, wallet.deployed, আৰু webhook.test। উৎপাদনত ৱেবহুক প্ৰায়েই এজেণ্টৰ সৈতে এটা ডেটাবেছ ভাগ কৰা পৃথক ASP.NET Core সেৱা হিচাপে চলে যাতে দুয়োটা সমন্বয় কৰিব পাৰে।
SDKসমূহ আৰু REST পৃষ্ঠতল খোলা। সিহঁত পঢ়ক।
ছেমাণ্টিক কাৰ্ণেল ষ্টাৰ্টাৰ পেকেজ ক্লোন কৰিবলৈ নাই - ওপৰৰ ৰেচিপসমূহ হৈছে একীকৰণ। blockchain0x মূল SDKসমূহ (Node, Python, Ruby, Go) GitHubত খুলি আছে, আৰু তেওঁলোকৰ পদ্ধতি পৃষ্ঠাৰ লগতে REST ৰাউটসমূহ যি C# উদাহৰণ কল কৰে সেয়া ডক্সত নথিভুক্ত কৰা হৈছে।
docs.blockchain0x.com/docs/overviewSDK পদ্ধতি পৃষ্ঠ আৰু REST ৰুটসমূহ ডক্সসমূহত নথিভুক্ত কৰা হৈছে। Base Sepoliaৰ বিৰুদ্ধে sk_test_ চাবিৰ সৈতে আৰম্ভ কৰক, তাৰপিছত KernelFunction আপোনাৰ আশা কৰা কাম কৰিলে sk_live_লৈ সলনি কৰক।
পাঁচটা Semantic Kernel-নির্দিষ্ট ফাঁদ যিবোৰ এৰাব লাগে।
Semantic Kernel ৰ প্লাগিন মডেলটো পৰিষ্কাৰ কিন্তু ভাষাৰ মাজত আৰু ব্যৱহাৰৰ ডিফল্ট সমস্যা আছে। সিহঁতক আগতীয়াকৈ জানিলে সময় বাচে।
কোনো ভাষাত Semantic Kernel পেকেজ নাই
NuGet, PyPI, বা Maven এডাপ্টাৰ নাই। পঠিওৱা মূল SDK সমূহ হৈছে Node, Python, Ruby, Go, আৰু JVM - .NET নহয়। সেয়ে এটা পাইথন কৰ্ণেল blockchain0x পাইথন ক্লায়েন্টটো @kernel_functionত মুঠ কৰে, এটা জাভা কৰ্ণেল com.blockchain0x:sdk-jvm SDK ব্যৱহাৰ কৰে, আৰু এটা C# কৰ্ণেল REST APIক সোজাকৈ KernelFunction (ওপৰত দেখুওৱা)ৰ পৰা কল কৰে। এই তিনিও কেইটামান লাইন।
FunctionChoiceBehavior স্বয়ংক্ৰিয় হ'ব লাগিব
সেমাণ্টিক কৰ্ণেল মাত্ৰ তেতিয়া প্লাগিন ফাংশনসমূহক আহ্বান কৰে যেতিয়া FunctionChoiceBehavior প্ৰম্পট-কাৰ্য্যৰ ছেটিংছত Autoত স্থাপন কৰা হয়। ডিফল্ট হৈছে None, সেয়ে মডেলটি আপোনাৰ ৱালেট ফাংশনক কেতিয়াও কল নকৰে যেতিয়া ব্যৱহাৰকাৰী স্পষ্টভাৱে সোধে। যদি এজেন্টে সম্পূৰ্ণৰূপে ফাংশনটো উপেক্ষা কৰে, তেন্তে প্ৰথমে এইটো পৰীক্ষা কৰক।
মাত্ৰাসমূহ 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.
এজেন্টসমূহৰ মাজত প্লাগইন পৰিসৰ
খৰচৰ অধিকাৰ ৰাখিবলগীয়া এজেন্টৰ কৰ্ণেলত মাত্ৰ ৱালেট ফাংশন পঞ্জীয়ন কৰক। প্লাগিনটো বিশ্বজনীন নহয় - যাৰ কৰ্ণেলত ইয়াৰ অভাৱ আছে সেই এজেন্টে ইয়াক কল কৰিব নোৱাৰে। এজন পৰ্যালোচক এজেন্টক ৱালেট ফাংশন নথকা কৰ্ণেল দিয়ক, অথবা প্ৰতিজন এজেন্টৰ বাবে অনুমোদিত ফাংশনসমূহ সীমাবদ্ধ কৰক, যাতে ধন এটা ভূমিকা ৰাখে।
কাঁচা বডীৰ বিৰুদ্ধে ৱেবহুক পৰীক্ষা কৰক
কাঁচা অনুৰোধৰ শৰীৰ পঢ়ক আৰু ডিচেৰিয়ালাইজ কৰাৰ আগতে পৰীক্ষা কৰক - HMAC সঠিক বাইটসমূহ ঢাকিছে, সেয়ে এটা পাৰ্স-তথা-ৰিচেৰিয়ালাইজ ৰাউণ্ড ট্ৰিপে ইয়াক ভাঙে। তলৰ .NET হেণ্ডলাৰে নথিভুক্ত এলগৰিদমটো বাস্তৱায়ন কৰে: HMAC-SHA256 t.rawBodyৰ ওপৰত, 300-ছেকেণ্ডৰ উইণ্ডো, আৰু এক ধ্ৰুৱক-সময় তুলনা। Python আৰু Java তেওঁলোকৰ নিজৰ HMAC লাইব্ৰেৰীৰ সৈতে একে ধৰণে পৰীক্ষা কৰে।