👀 خبر در یک نگاه:
Spring AI 1.0 با هدف سادهسازی توسعه اپلیکیشنهای هوش مصنوعی در اکوسیستم جاوا منتشر شده است. این فریمورک با پشتیبانی از مدلهای متنوع، تکنیک RAG و استانداردهای باز، به توسعهدهندهها امکان ساخت اپلیکیشنهای مقیاسپذیر و قابلانتقال با الگوهای آشنای Spring را میدهد.
|
تیم Spring از انتشار عمومی نسخه ۱.۰ Spring AI خبر داده است؛ فریمورکی که با هدف سادهسازی توسعه اپلیکیشنهای مبتنی بر هوش مصنوعی در اکوسیستم جاوا (Java) و اسپرینگ (Spring) طراحی شده است.
معرفی Spring AI 1.0
این نسخه، حاصل بیش از دو سال توسعه و هشت نسخه آزمایشی است و حالا یک API پایدار ارائه میدهد. Spring AI با انواع مختلف مدلهای هوش مصنوعی برای چت، تولید تصویر و تبدیل گفتار به متن یکپارچه شده است. از ویژگیهای کلیدی آن میتوان به سرویسهای قابل حمل (Portable Abstractions)، پشتیبانی از تکنیک RAG (تولید تقویتشده با بازیابی) با استفاده از دیتابیسهای برداری و ابزارهایی برای فراخوانی توابع اشاره کرد.
پشتیبانی از مدلها و ارائهدهندههای متنوع
💡 Spring AI 1.0 با پشتیبانی از مدلهای متنوع در حوزههای چت، تصویر، صوت و ارائهدهندههایی مثل OpenAI، Anthropic و Google، اتصال یکپارچه به مدلها را ممکن میکند. |
Spring AI 1.0 به توسعهدهندهها این امکان را میدهد که با تکیه بر الگوهای تثبیتشده Spring و بهرهگیری از اکوسیستم گسترده آن، اپلیکیشنهای هوش مصنوعی مقیاسپذیر و آماده تولید بسازند.
Spring AI بهصورت پیشفرض از تعداد زیادی مدل و ارائهدهنده هوش مصنوعی پشتیبانی میکند. این فریمورک با ارائهدهندههای بزرگ هوش مصنوعی مولد مثل OpenAI، Anthropic، Microsoft Azure OpenAI، Amazon Bedrock و Google Vertex AI از طریق یک لایه API یکپارچه، ارتباط برقرار میکند.
مدلهای پشتیبانیشده
از انواع مختلف مدلها در حوزههای متنوعی مثل تکمیل چت، بردارسازی (Embedding)، تولید تصویر، تبدیل صوت به متن، تبدیل متن به گفتار و کنترل محتوا پشتیبانی میکند. این امکان را به توسعهدهندهها میدهد که قابلیتهایی مانند چتباتهای مبتنی بر GPT، خلق تصویر یا تشخیص گفتار را به اپلیکیشنهای Spring خود اضافه کنند.
این فریمورک سرویسهای قابل حمل ارائه میدهد که کد اپلیکیشن را از ارائهدهندههای خاص هوش مصنوعی جدا میکند. API آن به توسعهدهندهها اجازه میدهد با حداقل تغییرات کد، بین ارائهدهندههای مختلف مدل مثل OpenAI و Anthropic جابجا شوند، در حالی که همچنان به امکانات خاص هر مدل دسترسی داشته باشند.
قابلیتهای کلیدی فریمورک
💡 این فریمورک با ارائه abstractionهای قابل حمل، APIهای ساختارمند و ابزارهای تعاملی، توسعه اپلیکیشنهای AI محور را با حداقل وابستگی ساده میکند. |
Spring AI از خروجیهای ساختارمند پشتیبانی میکند و پاسخهای مدل هوش مصنوعی را به اشیای ساده جاوا (POJO) تبدیل میکند تا پردازش نوعامن (Type-safe) امکانپذیر شود.
پشتیبانی از تکنیک RAG و دیتابیسهای برداری
برای تکنیک Retrieval Augmented Generation (RAG)، Spring AI با چندین دیتابیس برداری مثل Cassandra، PostgreSQL/PGVector، MongoDB Atlas، Milvus، Pinecone و Redis از طریق یک API یکنواخت برای ذخیره برداری (Vector Store) یکپارچه میشود. این امکان را فراهم میکند که پاسخهای مدلهای زبان بزرگ (LLM) بر پایه دادههای سازمانی شکل بگیرند.
ابزارها و APIهای فراخوانی توابع
فریمورک SpringAI از ابزارها و APIهای فراخوانی توابع پشتیبانی میکند تا مدلهای هوش مصنوعی بتوانند بهصورت استاندارد توابع یا ابزارهای خارجی را فراخوانی کنند. این قابلیتها برای کاربردهایی مثل «پرسش و پاسخ روی مستندات شما» یا «گفتوگو با دادههای شما» بسیار مفید است.
➕ نکته: API فراخوانی توابع از استانداردهای ساختیافته JSON استفاده میکند که تطبیق آن با قابلیت Function Calling در مدلهایی مثل GPT-4 را تسهیل میکند. خروجی توابع بهصورت اتوماتیک بهعنوان Context به مدل ارسال میشود.
پشتیبانی از پروتکل (Model Context Protocol (MCP
Spring AI 1.0 از پروتکل مدل کانتکست (MCP) پشتیبانی میکند؛ یک استاندارد باز و تازه برای تعامل ساختاریافته و بدون وابستگی به زبان بین مدلهای هوش مصنوعی (خصوصا مدلهای زبان بزرگ) و ابزارها یا منابع خارجی.
➕ نکته: MCP به مدلها امکان میدهد تا قابلیتهای chaining و تعامل با ابزارهای خارجی را با حفظ state بین پیامها پیادهسازی کنند که برای multi-turn interactions و گفتوگوی پیچیده ضروری است.
تیم Spring پیادهسازی MCP خود را به پروژه ModelContextProtocol.io ارائه کرده که به عنوان SDK رسمی جاوا برای خدمات MCP عمل میکند. این موضوع نشاندهنده تمرکز Spring AI روی استانداردهای باز و قابلیت همکاری (Interoperability) است.
استارترهای Spring AI برای MCP
💡 استارترهای Spring AI برای MCP به توسعهدهندهها کمک میکنند تا تعامل مدلهای هوش مصنوعی با ابزارها و سرویسهای خارجی را بهراحتی در اپلیکیشنهای Spring Boot پیاده کنند.
دستهبندی استارترها:
این استارترها سرعت و سهولت توسعه سرویسهای هوش مصنوعی مبتنی بر پروتکل MCP را تضمین میکنند. |
برای تسهیل یکپارچگی با MCP، Spring AI استارترهای اختصاصی کلاینت و سرور برای Spring Boot ارائه میدهد که امکان تعامل مدلها با ابزارها را فراهم میکند، مثل نمونه سرویس آبوهوا:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ |
import org.springframework.ai.tool.annotation.Tool; import org.springframework.stereotype.Component; @Component public class WeatherTool { @Tool(name = “getWeather”, description = “Returns weather for a given city”) public String getWeather(String city) { return “The weather in “ + city + ” is 21°C and sunny.”; } } |
این استارترها به این دستهها تقسیم میشوند:
استارترهای کلاینت (Client Starters)
- spring-ai-starter-mcp-client (پشتیبانی اصلی از STDIO و SSE مبتنی بر HTTP)
- spring-ai-starter-mcp-client-webflux (حامل SSE مبتنی بر WebFlux برای اپلیکیشنهای واکنشی)
استارترهای سرور
- spring-ai-starter-mcp-server (پشتیبانی اصلی از حملونقل STDIO)
- spring-ai-starter-mcp-server-webmvc (حامل SSE مبتنی بر Spring MVC در اپلیکیشنهای servlet)
- spring-ai-starter-mcp-server-webflux (حامل SSE مبتنی بر WebFlux در اپلیکیشنهای واکنشی)
شروع سریع با Spring Boot و Spring Initializr
توسعهدهندهها میتوانند پروژههای جدید Spring AI 1.0 را با استفاده از Spring Initializr شروع کنند که وابستگیهای لازم را بهصورت پیشتنظیم فراهم میکند.
با اضافه کردن استارتر Spring AI مورد نظر به classpath، Spring Boot بهصورت خودکار کلاینتها یا سرویسهای لازم را پیکربندی میکند.
نمونه پیادهسازی یک ChatController ساده
نمونهای از یک کنترلر ساده چت به شکل زیر است:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ |
import org.springframework.ai.chat.client.ChatClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class ChatController { private final ChatClient chatClient; public ChatController(ChatClient.Builder chatClientBuilder) { this.chatClient = chatClientBuilder.build(); } @GetMapping(“/ask”) public String ask(@RequestParam String question) { return chatClient.prompt() .user(question) .call() .content(); } } |
تنظیمات لازم در application.properties
حداقل برای اجرای مثال بالا، باید مقدار کلیدی زیر در فایل application.properties قرار بگیرد:
۱ ۲ ۳ |
spring.ai.openai.api–key=YOUR_API_KEY spring.ai.openai.chat.model=gpt–۴ |
APIهای اسپرینگ AI سطح بالاتری برای الگوهای متداول اپلیکیشنهای هوش مصنوعی ارائه میدهد.
API چت بهصورت Fluent (روان و زنجیرهای) یک سازنده نوعامن (Type-safe) برای تعامل با مدلهای چت فراهم میکند.
APIهای سطح بالا برای توسعه اپلیکیشنهای AI
علاوه بر این، API مشاوران (Advisors) الگوهای تکرارشونده هوش مصنوعی مولد مثل افزایش بازیابی (Retrieval Augmentation)، حافظه مکالمهای و روندهای پرسشوپاسخ را در قالب آماده بستهبندی کرده است.
استفاده از API چت با ساختار Fluent
مثلا جریان RAG با ترکیب ChatClient و QuestionAnswerAdvisor قابل پیادهسازی است:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ |
ChatResponse response = ChatClient.builder(chatModel) .build() .prompt() .advisors(new QuestionAnswerAdvisor(vectorStore)) .user(userText) .call() .chatResponse(); |
➕ نکته: این ساختار به توسعهدهندهها اجازه میدهد قابلیتهایی مثل context injection، پاسخگویی شرطی و انتخاب دینامیک مدل را تنها با تغییر در زنجیره Fluent بدون بازنویسی کدهای پایه پیادهسازی کنند.
در این مثال، QuestionAnswerAdvisor جستجوی شباهت را در VectorStore انجام میدهد، زمینه مرتبط را به درخواست کاربر اضافه میکند و ورودی غنیشده را به مدل ارسال میکند.
همچنین میتوان از یک SearchRequest اختیاری با فیلتر شبیه به SQL برای محدود کردن جستجو در اسناد استفاده کرد.
جمعبندی و مسیرهای بعدی
برای اطلاعات بیشتر، توسعهدهندهها میتوانند صفحه پروژه Spring AI را بررسی کنند یا کار با Spring AI را از طریق start.spring.io شروع کنند.
این نسخه راهحلی برای توسعهدهندههای جاوا فراهم میکند تا قابلیتهای هوش مصنوعی را به اپلیکیشنهای خود اضافه کنند، همراه با ویژگیهایی برای مقیاسپذیری و همراستایی با الگوهای مرسوم توسعه در Spring.
منبع: infoq.com
دیدگاهتان را بنویسید