چت پایه با Azure AI Foundry - نمونه انتها به انتها
September 15, 2026 · View on GitHub
این مثال یک برنامه ساده Spring Boot است که به مدل Azure AI Foundry با استفاده از احراز هویت بدون کلید (Microsoft Entra ID) متصل میشود و تنظیمات شما را آزمایش میکند. این برنامه از ChatClient در Spring AI استفاده میکند که توسط کتابخانه OpenAI Java رسمی و نقطه پایانی Azure OpenAI v1 پشتیبانی میشود.
نسخههای موجود در pom.xml عبارتند از Spring Boot 4.1.1، Spring AI 2.0.1، OpenAI Java 4.63.1، Azure Identity 1.18.6، و dotenv-java 3.2.0. نمونه از spring-ai-starter-model-openai استفاده میکند و به طور صریح openai-java و azure-identity را اعلام میکند؛ در Spring AI 2، استارتر قدیمی Azure OpenAI حذف شده است.
فهرست مطالب
پیشنیازها
قبل از اجرای این مثال، اطمینان حاصل کنید که:
- یک منبع Azure AI Foundry با یک استقرار
gpt-5.6-lunaدارید - آن را باazd upفراهم کنید یا به صورت دستی از طریق راهنمای راهاندازی Azure AI Foundry - نقش کاربر سرویسهای شناختی OpenAI روی آن منبع را دارید (قالبهای Bicep این نقش را برای شما تخصیص میدهند)
- Azure CLI (
az) را دارید و باaz loginوارد شدهاید - Java 21+ و Maven 3.9+ نصب شده
نیازی به کلید API نیست — احراز هویت بدون کلید از طریق Microsoft Entra ID است.
شروع سریع
# ۱. به پروژه بروید
cd 02-SetupDevEnvironment/examples/basic-chat-azure
# ۲. وارد شوید تا احراز هویت بدون کلید بتواند توکن دریافت کند
az login
# ۳. نقطه پایانی را پیکربندی کنید
# - اگر دستور `azd up` را اجرا کردهاید، فایل .env برای شما نوشته شده است (این مرحله را رد کنید).
# - در غیر این صورت، قالب را کپی کرده و AZURE_OPENAI_ENDPOINT را تنظیم کنید:
cp .env.example .env
# ۴. برنامه را اجرا کنید
mvn spring-boot:run
نحوه کار احراز هویت
این مثال با Microsoft Entra ID احراز هویت میکند — کلید API وجود ندارد.
برنامه به صورت صریح احراز هویت را در BasicChatApplication.java پیکربندی میکند:
azureCredential()یکBearerTokenCredentialایجاد میکند که با استفاده ازAuthenticationUtil.getBearerTokenSupplierهمراه باDefaultAzureCredentialو دامنهhttps://ai.azure.com/.defaultساخته شده است.azureOpenAiClient()یکOpenAIClientباOpenAIOkHttpClient.builder()میسازد، نقطه پایانی منبع را به/openai/v1حل میکند و اعتبارنامه توکن را با.credential(...)تامین میکند.azureChatModel()آن کلاینت را بهOpenAiChatModelدر Spring AI تامین میکند که پشتChatClientاین درس قرار دارد.
این بنهای صریح مانع از آن میشوند که یک OPENAI_API_KEY جهانی احراز هویت Azure را بازنویسی کند. کنار گذاشتن کلید API فقط از YAML به تنهایی، تنظیم احراز هویت نیست. DefaultAzureCredential میتواند از جلسه az login شما به صورت محلی یا شناسه مدیریت شده در Azure استفاده کند؛ هر هویتی که انتخاب میشود باید نقش منبع ذکر شده را داشته باشد.
اجرای برنامه
استفاده از Maven
mvn spring-boot:run
استفاده از VS Code
- پروژه را در VS Code باز کنید
- کلید
F5را فشار دهید یا از پنل "Run and Debug" استفاده کنید - پیکربندی "Spring Boot-BasicChatApplication" را انتخاب کنید
توجه: برنامه فایل
.envرا از دایرکتوری کاری خود بارگیری میکند، حتی زمانی که از VS Code اجرا میشود.
خروجی مورد انتظار
خروجی نمونه پس از اجرای موفق (لاگهای راهاندازی حذف شدهاند؛ عبارت پاسخ متغیر است):
Starting Basic Chat with Azure OpenAI...
Environment variables loaded from .env file
Endpoint: https://your-resource.openai.azure.com/
Deployment: gpt-5.6-luna
Auth: keyless (Microsoft Entra ID via DefaultAzureCredential)
Connecting to Azure OpenAI...
Sending prompt: What is AI in a short sentence? Max 100 words.
AI Response:
================
AI, or Artificial Intelligence, is the simulation of human intelligence in machines programmed to think and learn like humans.
================
Success! Azure OpenAI connection is working correctly.
رفرنس پیکربندی
متغیرهای محیطی
| متغیر | توضیح | لازم است | مثال |
|---|---|---|---|
AZURE_OPENAI_ENDPOINT | آدرس نقطه پایانی Foundry (Azure OpenAI) | بله | https://my-resource.openai.azure.com/ |
AZURE_OPENAI_DEPLOYMENT | نام استقرار مدل چت | خیر | gpt-5.6-luna (پیشفرض) |
متغیر کلید API وجود ندارد — احراز هویت بدون کلید است (Microsoft Entra ID از طریق
az login).
پیکربندی Spring
تنظیمات در application.yml از پیشوند spring.ai.openai و ویژگیهای چت تخت استفاده میکنند (هیچ بلوک options نیست):
spring:
ai:
openai:
base-url: ${AZURE_OPENAI_ENDPOINT}
microsoft-foundry: true
chat:
model: ${AZURE_OPENAI_DEPLOYMENT:gpt-5.6-luna}
reasoning-effort: none
max-completion-tokens: 500
model نام استقرار Azure است. احراز هویت از بنهای صریح شرح داده شده در بالا میآید، نه از تنظیم api-key. این درس استدلال را غیرفعال کرده و توکنهای تکمیل را در ۵۰۰ محدود میکند؛ temperature و max-tokens قدیمی تنظیم نشدهاند.
مایکروسافت استفاده از کتابخانه OpenAI رسمی با Azure OpenAI v1 و API پاسخها را برای برنامههای جدید توصیه میکند. چت کامپلیشنها همچنان برای این درس مبتنی بر پیام پشتیبانی میشوند. برای GPT-5.6، درخواستهایی که شامل ابزارها روی چت کامپلیشنها هستند باید reasoning_effort را روی none تنظیم کنند؛ هنگام ترکیب استدلال با ابزارها از پاسخها استفاده کنید. به فراخوانی ابزار با مدلهای استدلالی مراجعه کنید.
عیبیابی
مشکلات متداول
خطا: 401 / "PermissionDenied" / خطاهای توکن
- اجرای
az login— احراز هویت بدون کلید نیاز به ورود فعال برای دریافت توکن دارد - اطمینان حاصل کنید حساب کاربری شما نقش کاربر سرویسهای شناختی OpenAI روی منبع دارد
- اگر به تازگی نقش را تخصیص دادهاید، چند دقیقه صبر کنید تا اعمال شود
- تایید کنید در اجارهدار/اشتراک مناسب هستید (
az account show)
خطا: "نقطه پایانی معتبر نیست" / خطاهای اتصال
- اطمینان حاصل کنید
AZURE_OPENAI_ENDPOINTیک URL پایه کامل است (مثلاًhttps://your-resource.openai.azure.com/) - بررسی سازگاری اسلش انتهایی
- تایید کنید نقطه پایانی با منبع فراهم شده شما مطابقت دارد (
azd env get-values)
خطا: "استقرار یافت نشد"
- بررسی کنید که
AZURE_OPENAI_DEPLOYMENTبا نام استقرار در Azure مطابقت دارد - اطمینان حاصل کنید مدل با موفقیت مستقر و فعال است
- نام پیشفرض استقرار
gpt-5.6-lunaاست
خطا: 429 / محدودیت نرخ عبور شده است
- استقرار پیشفرض GPT-5.6 Luna دارای ظرفیت Global Standard 10 است: ۱۰ درخواست در دقیقه و ۱۰,۰۰۰ توکن در دقیقه
- نمونهها را به صورت متوالی اجرا کنید و قبل از تلاش مجدد منتظر فاصله دوبارهگذاری سرویس باشید
- این مثال پایه دوباره تلاش خودکار SDK را غیرفعال کرده، بنابراین درخواست ناموفق به طور مستقیم گزارش میشود
VS Code: بارگذاری نشدن متغیرهای محیطی
- اطمینان حاصل کنید فایل
.envدر شاخه ریشه پروژه قرار دارد (همسطح باpom.xml) - تلاش کنید
mvn spring-boot:runرا در ترمینال یکپارچه VS Code اجرا کنید - بررسی کنید افزونه جاوا در VS Code به درستی نصب شده باشد
حالت دیباگ
برای فعال کردن لاگگیری دقیق، این خطها را در application.yml از حالت کامنت خارج کنید:
logging:
level:
"[org.springframework.ai]": DEBUG
"[com.azure]": DEBUG
گامهای بعدی
تنظیمات کامل شد! سفر یادگیری خود را ادامه دهید:
فصل ۳: تکنیکهای اصلی هوش مصنوعی مولد
منابع
- انتقال Spring AI 2 OpenAI Java SDK
- کتابخانه رسمی OpenAI Java با Azure OpenAI v1
- احراز هویت بدون کلید با Microsoft Entra ID
- پرتال Azure AI Foundry
- مستندات Azure AI Foundry
سلب مسئولیت: این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.