کتابخانهی رسمی OpenAI برای .NET با بستهی NuGet به نام OpenAI منتشر میشود و کلاینت آن گزینهی Endpoint دارد. با تغییر Endpoint به آدرس پیکو هوش، برنامهی ASP.NET Core، سرویس Worker یا ابزار کنسولی شما به همهی مدلهای کاتالوگ دسترسی پیدا میکند.
اگر ترجیح میدهید وابستگی نداشته باشید، HttpClient همراه .NET با System.Text.Json کاملاً کافی است.
پیشنیازها
- یک حساب پیکو هوش و یک کلید API از داشبورد (کلید فقط یکبار کامل نمایش داده میشود).
- شناسهی دقیق مدل از کاتالوگ؛ در مثالها از gpt-6-sol و claude-sonnet-5-5 استفاده شده است.
- کمی موجودی در کیف پول تومانی یا اعتبار؛ تعرفه را در صفحهی قیمتها ببینید.
راهاندازی گامبهگام
نصب بسته
بستهی رسمی را اضافه کنید.
Terminal dotnet add package OpenAIساخت کلاینت با Endpoint
OpenAIClientOptions.Endpoint را روی آدرس پایه بگذارید و ChatClient را با نام مدل بگیرید.
Program.cs using System.ClientModel; using OpenAI; using OpenAI.Chat; var options = new OpenAIClientOptions { Endpoint = new Uri("https://api.picoai.ir/v1") }; var client = new OpenAIClient( new ApiKeyCredential(Environment.GetEnvironmentVariable("PICOAI_API_KEY")!), options); ChatClient chat = client.GetChatClient("gpt-6-sol"); ChatCompletion res = chat.CompleteChat("سلام!"); Console.WriteLine(res.Content[0].Text);بدون وابستگی با HttpClient
برای دیدن دقیق درخواست و پاسخ، این روش شفافتر است.
Http.cs using var http = new HttpClient { BaseAddress = new Uri("https://api.picoai.ir/v1/") }; http.DefaultRequestHeaders.Authorization = new("Bearer", Environment.GetEnvironmentVariable("PICOAI_API_KEY")); var res = await http.PostAsJsonAsync("chat/completions", new { model = "gpt-6-sol", messages = new[] { new { role = "user", content = "سلام" } } }); Console.WriteLine(await res.Content.ReadAsStringAsync());ثبت در DI
در ASP.NET Core کلاینت را Singleton ثبت کنید تا در سرویسها تزریق شود.
Program.cs builder.Services.AddSingleton(_ => new OpenAIClient( new ApiKeyCredential(builder.Configuration["PicoAi:Key"]!), new OpenAIClientOptions { Endpoint = new Uri("https://api.picoai.ir/v1") }));
تست سریع اتصال
پیش از نوشتن منطق برنامه، یک بار فهرست مدلها را بگیرید. اگر پاسخ ۲۰۰ و فهرستی از شناسهها برگشت، کلید، شبکه و آدرس درست است و هر مشکل بعدی مربوط به تنظیمات C# و .NET خواهد بود.
curl https://api.picoai.ir/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"نکتههای کاربردی برای C# و .NET
- کلید را با User Secrets در توسعه و با Key Vault یا متغیر محیطی در تولید نگه دارید.
- برای IHttpClientFactory، مدتزمان Timeout پیشفرض ۱۰۰ ثانیه است؛ برای پاسخهای طولانی استریم را ترجیح دهید.
- نام کلاسها بین نسخههای بسته ممکن است تغییر کند؛ نسخهی NuGet را ثابت نگه دارید.
عیبیابی
خطای UriFormatException
آدرس باید شامل https:// باشد. در HttpClient، BaseAddress باید به اسلش ختم شود تا مسیر نسبی درست ترکیب شود.
کلید معتبر است ولی 401 میگیرم
مطمئن شوید کلید با فاصله یا خط جدید همراه نیست و متغیر محیطی در همان پروسه تنظیم شده است.
پاسخ استریم در ASP.NET بافر میشود
پاسخ را با IAsyncEnumerable یا Response.Body.FlushAsync ارسال کنید و بافر پراکسی را خاموش کنید.
خطای 401 (Unauthorized)
کلید اشتباه، غیرفعال یا همراه فاصلهی اضافه است. در داشبورد کلید را بررسی و در صورت نیاز یک کلید تازه بسازید.
خطای 429 (Rate limit)
تعداد درخواستهای شما در دقیقه از سقف کلید بیشتر شده است. چند ثانیه صبر و دوباره تلاش کنید یا سقف کلید را در داشبورد بررسی کنید.
هزینه و صورتحساب
هر درخواست قبل از اجرا مقداری از موجودی را رزرو میکند و پس از پاسخ موفق بر پایهی توکنهای واقعی تسویه میشود؛ مابهالتفاوت برمیگردد و درخواست ناموفق چیزی کم نمیکند. جدول قیمت هر مدل در صفحهی قیمتها منتشر شده و مصرف هر درخواست در داشبورد قابل مشاهده است. اگر قبلاً از سرویس دیگری استفاده میکردید، راهنمای مهاجرت و صفحهی مقایسه را ببینید.
پرسشهای متداول
آیا با .NET Framework کار میکند؟
بستهی رسمی به .NET Standard 2.0 به بالا هدفگذاری شده است؛ برای نسخههای قدیمیتر از HttpClient استفاده کنید.
Semantic Kernel چطور؟
Semantic Kernel هم رابط OpenAI با گزینهی endpoint دارد؛ نام پارامتر نسخهها متفاوت است و باید در مستندات آن بررسی شود.
مدل Claude را هم میتوانم صدا بزنم؟
بله، فقط نام مدل را عوض کنید (مثلاً claude-sonnet-5-5) یا از نقطهی /v1/messages استفاده کنید.
اگر درخواست ناموفق باشد هزینه کم میشود؟
خیر. در پیکو هوش هزینه ابتدا رزرو و پس از پاسخ موفق بر اساس مصرف واقعی تسویه میشود؛ درخواست ناموفق بدون کسر هزینه است.
C# و .NET را همین حالا وصل کنید
با ساخت حساب و یک کلید، در چند دقیقه اولین پاسخ را بگیرید. اگر ابزار دیگری دارید، فهرست کامل اتصالها را ببینید.
راهنمای ابزارهای مرتبط
- اتصال Javaفراخوانی API پیکو هوش از Java با HttpClient
- اتصال Goاستفاده از API پیکو هوش در Go با go-openai
- اتصال cURLفراخوانی مستقیم API پیکو هوش از ترمینال
- اتصال Postmanآزمایش API پیکو هوش با Postman و متغیرهای محیطی
- اتصال OpenAI Python SDKکتابخانهی رسمی OpenAI برای پایتون با پیکو هوش
- اتصال OpenAI Node.js SDKکتابخانهی رسمی OpenAI برای Node.js و TypeScript
- مقایسهی پیکو هوش با سرویسهای مشابهمقایسهی بیطرفانه و مبتنی بر اطلاعات عمومی
- Base URL چیست؟تعریف و کاربرد آدرس پایه در APIهای سازگار