Foundry Local Spring Boot ट्यूटोरियल
April 15, 2026 · View on GitHub
सामग्री सूची
- पूर्वअटी
- प्रकल्पाचा आढावा
- कोड समजून घेणे
- हे सर्व कसे काम करते
- Foundry Local सेटअप करणे
- अनुप्रयोग चालवणे
- अपेक्षित आउटपुट
- पुढील टप्पे
- समस्या निवारण
पूर्वअटी
हा ट्यूटोरियल सुरू करण्यापूर्वी, याची खात्री करा की तुमच्याकडे आहे:
- Java 21 किंवा त्याहून वर तुमच्या सिस्टिमवर स्थापित आहे
- प्रकल्प तयार करण्यासाठी Maven 3.6+
- Foundry Local स्थापित आणि चालू आहे
Foundry Local इंस्टॉल करा:
नोट: Foundry Local CLI फक्त Windows आणि macOS वर उपलब्ध आहे. Linux साठी Foundry Local SDKs (Python, JavaScript, C#, Rust) द्वारे समर्थन दिले जाते.
# Windows
winget install Microsoft.FoundryLocal
# macOS
brew tap microsoft/foundrylocal
brew install foundrylocal
इंस्टॉलेशन तपासा:
foundry --version
प्रकल्पाचा आढावा
हा प्रकल्प चार मुख्य घटकांपासून बनलेला आहे:
- Application.java - मुख्य Spring Boot अनुप्रयोगाची एंट्री पॉइंट
- FoundryLocalService.java - AI संवाद सांभाळणारी सेवा स्तर
- application.properties - Foundry Local कनेक्शन साठी कॉन्फिगरेशन
- pom.xml - Maven अवलंबित्वे आणि प्रकल्प कॉन्फिगरेशन
कोड समजून घेणे
1. अनुप्रयोग कॉन्फिगरेशन (application.properties)
फाईल: src/main/resources/application.properties
foundry.local.base-url=http://localhost:5273/v1
# foundry.local.model is auto-detected from Foundry Local. Set it here to override:
# foundry.local.model=Phi-4-mini-instruct-cuda-gpu:5
हे काय करते:
- base-url: Foundry Local कुठे चालू आहे हे निर्दिष्ट करते, ज्यामध्ये OpenAI API अनुकूलतेसाठी
/v1पाथ समाविष्ट आहे. डीफॉल्ट पोर्ट5273आहे. जर पोर्ट वेगळा असेल, तरfoundry service statusवापरून तपासा. - model (पर्यायी): टेक्स्ट जनरेशनसाठी वापरायचा AI मॉडेलचे नाव देते. मुळात, अनुप्रयोग स्वयं-ओळखणी करून मॉडेल शोधतो Foundry Local च्या
/v1/modelsएंडपॉइंटवर स्टार्टअपला, त्यामुळे तुम्हाला हे सेट करण्याची गरज नाही. तरीही, हव्यास असल्यास स्वतःहून सेट करू शकता.
मुख्य संकल्पना: Spring Boot हे प्रॉपर्टीज आपोआप लोड करते आणि तुमच्या अनुप्रयोगासाठी @Value ऍनोटेशन वापरून उपलब्ध करून देते.
2. मुख्य अनुप्रयोग वर्ग (Application.java)
फाईल: src/main/java/com/example/Application.java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Application.class);
app.setWebApplicationType(WebApplicationType.NONE); // कोणत्याही वेब सर्व्हरची गरज नाही
app.run(args);
}
हे काय करते:
@SpringBootApplicationSpring Boot ऑटो-कॉन्फिगरेशन सक्षम करतेWebApplicationType.NONESpring ला सांगते की हा वेब सर्व्हर नाही, तर कमांड-लाइन अॅप आहे- मुख्य मेथड Spring अनुप्रयोग सुरू करते
डेमो रनर:
@Bean
public CommandLineRunner foundryLocalRunner(FoundryLocalService foundryLocalService) {
return args -> {
System.out.println("=== Foundry Local Demo ===");
System.out.println("Calling Foundry Local service...");
String testMessage = "Hello! Can you tell me what you are and what model you're running?";
System.out.println("Sending message: " + testMessage);
String response = foundryLocalService.chat(testMessage);
System.out.println("Response from Foundry Local:");
System.out.println(response);
System.out.println("=========================");
};
}
हे काय करते:
@Beanएक कॉम्पोनंट तयार करते ज्याचे व्यवस्थापन Spring करतेCommandLineRunnerSpring Boot सुरू झाल्यानंतर कोड चालवतोfoundryLocalServiceस्वयंचलितपणे Spring कडून इंजेक्ट होते (dependency injection)- AI कडे एक तपासणी संदेश पाठवतो आणि प्रतिसाद दाखवतो
3. AI सेवा स्तर (FoundryLocalService.java)
फाईल: src/main/java/com/example/FoundryLocalService.java
कॉन्फिगरेशन इंजेक्शन:
@Service
public class FoundryLocalService {
@Value("${foundry.local.base-url:http://localhost:5273/v1}")
private String baseUrl;
@Value("${foundry.local.model:}")
private String model; // रिक्त असल्यास आपोआप ओळखले गेले
हे काय करते:
@ServiceSpring ला सांगते की हा वर्ग व्यवसाय लॉजिक पुरवतो@Valueapplication.properties मधून कॉन्फिगरेशन मूल्ये इंजेक्ट करते- मॉडेल मुळतः रिक्त आहे, ज्यामुळे Foundry Local कडून प्रारंभी स्वयं-ओळखणी होते. याचा अर्थ अनुप्रयोग Foundry Local मध्ये लोड झालेल्या कोणत्याही मॉडेलसह निर्बाध काम करू शकतो.
क्लायंट इनिशियलायझेशन:
@PostConstruct
public void init() {
// जर स्पष्टपणे संरचित केले नसेल तर Foundry Local मधून मॉडेल आपोआप ओळखा
if (model == null || model.isBlank()) {
model = detectModel();
}
this.openAIClient = OpenAIOkHttpClient.builder()
.baseUrl(baseUrl) // बेस URL मध्ये आधीच संरचनेतून /v1 समाविष्ट आहे
.apiKey("not-needed") // स्थानिक सर्व्हरला खऱ्या API कीची गरज नाही
.build();
}
हे काय करते:
@PostConstructया मेथडला Spring सेवा तयार केल्यावर कॉल करते- जर मॉडेल सेट नसेल, तर Foundry Local च्या
/v1/modelsएंडपॉइंटवर क्वेरी करून पहिले लोड झालेले मॉडेल निवडते - एक OpenAI क्लायंट तयार करतो जो तुमच्या स्थानिक Foundry Local इंस्टन्सशी जोडतो
- application.properties मधील बेस URL मध्ये आधीच OpenAI API अनुकूलतेसाठी
/v1समाविष्ट आहे - API की "not-needed" सेट केली आहे कारण स्थानिक विकासासाठी प्रमाणीकरण आवश्यक नाही
चॅट मेथड:
public String chat(String message) {
try {
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
.model(model) // कोणता AI मॉडेल वापरायचा
.addUserMessage(message) // तुमचा प्रश्न/प्रांप्ट
.maxCompletionTokens(150) // प्रतिसादाची लांबी मर्यादित करा
.temperature(0.7) // सृजनशीलता नियंत्रित करा (0.0-1.0)
.build();
ChatCompletion chatCompletion = openAIClient.chat().completions().create(params);
// API परिणामातून AI चे प्रतिसाद काढा
if (chatCompletion.choices() != null && !chatCompletion.choices().isEmpty()) {
return chatCompletion.choices().get(0).message().content().orElse("No response found");
}
return "No response content found";
} catch (Exception e) {
throw new RuntimeException("Error calling chat completion: " + e.getMessage(), e);
}
}
हे काय करते:
- ChatCompletionCreateParams: AI विनंती कॉन्फिगर करते
model: कोणते AI मॉडेल वापरायचे ते निर्दिष्ट करते (योग्य ID घेतलेली असावीfoundry model listवरून)addUserMessage: संभाषणाला तुमचा संदेश जोडतोmaxCompletionTokens: प्रतिसाद किती लांब असू शकतो याला मर्यादा घालतो (संसाधने वाचवते)temperature: यादृच्छिकतेवर नियंत्रण ठेवतो (0.0 = निश्चित, 1.0 = सर्जनशील)
- API कॉल: Foundry Local कडे विनंती पाठवतो
- प्रतिसाद हाताळणी: AI चा टेक्स्ट प्रतिसाद सुरक्षितपणे मिळवतो
- त्रुटी हाताळणी: अपवादांना मदत करणारे त्रुटी संदेश देतो
4. प्रकल्प अवलंबित्व (pom.xml)
महत्त्वाचे अवलंबित्व:
<!-- Spring Boot - Application framework -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<!-- OpenAI Java SDK - For AI API calls -->
<dependency>
<groupId>com.openai</groupId>
<artifactId>openai-java</artifactId>
<version>2.12.0</version>
</dependency>
<!-- Jackson - JSON processing -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.0</version>
</dependency>
हे काय करतात:
- spring-boot-starter: मूळ Spring Boot कार्यक्षमता प्रदान करते
- openai-java: OpenAI अधिकृत Java SDK API संवादासाठी
- jackson-databind: API कॉल्ससाठी JSON सीरियलायझेशन/डिसीरियलायझेशन हाताळते
हे सर्व कसे काम करते
अंडीटीप करण्याची प्रक्रिया खालीलप्रमाणे आहे:
- स्टार्टअप: Spring Boot सुरू होतो आणि
application.propertiesवाचतो - सेवा निर्मिती: Spring
FoundryLocalServiceतयार करतो आणि कॉन्फिगरेशन मूल्ये इंजेक्ट करतो - मॉडेल शोध: जर मॉडेल सेट नसेल, तर सेवा Foundry Local च्या
/v1/modelsएंडपॉइंटवर क्वेरी करते आणि पहिला उपलब्ध मॉडेल स्वयं-ऑप्ट करून वापरते - क्लायंट सेटअप:
@PostConstructOpenAI क्लायंट इनिशियलायझ करते जे Foundry Local शी कनेक्ट होतं - डेमो अंमलबजावणी:
CommandLineRunnerस्टार्टअपनंतर कार्यान्वित होतो - AI कॉल: डेमो
foundryLocalService.chat()चा वापर करून तपासणी संदेश पाठवतो - API विनंती: सेवा OpenAI अनुकूल विनंती तयार करते आणि Foundry Local कडे पाठवते
- प्रतिसाद प्रक्रिया: सेवा AI चा प्रतिसाद घेते आणि परत करते
- प्रदर्शन: अनुप्रयोग प्रतिसाद छापतो आणि बाहेर पडतो
Foundry Local सेटअप करणे
-
पूर्वअटी विभागातील सूचनांनुसार Foundry Local इंस्टॉल करा.
-
सेवा सुरू करा (जर आधीपासून नसेल तर):
foundry service start -
सेवा स्थिती तपासा आणि चालू असल्याची खात्री करा, तसेच पोर्ट लक्षात ठेवा:
foundry service status -
मॉडेल डाउनलोड आणि चालवा (प्रथम वेळी डाउनलोड होईल, नंतर कॅशे होईल):
foundry model run phi-4-miniहे एक संवादात्मक चॅट सत्र उघडते.
Ctrl+Cवापरून बाहेर पडू शकता. मॉडेल सेवा मध्ये लोड झालेले राहते.टीप:
foundry model listचालवा सर्व उपलब्ध मॉडेल बघण्यासाठी.phi-4-miniऐवजी कोणताही अॅलियस वापरू शकता (उदा.,qwen2.5-0.5bलहान/जलद मॉडेलसाठी). -
मॉडेल लोड झाले आहे का ते तपासा:
foundry service ps -
आवश्यक असल्यास
application.propertiesअपडेट करा:- डीफॉल्ट
base-url(http://localhost:5273/v1) CLI पोर्टशी जुळतो.foundry service statusवेगळा पोर्ट दाखवला तरच बदल करा. - मॉडेल स्टार्टअपवेळी स्वतः शोधून काढला जातो — कोणतीही अतिरिक्त कॉन्फिगरेशन आवश्यक नाही.
foundry.local.base-url=http://localhost:5273/v1 # Model is auto-detected. Uncomment below to override: # foundry.local.model=Phi-4-mini-instruct-cuda-gpu:5 - डीफॉल्ट
अनुप्रयोग चालवणे
टप्पा 1: Foundry Local मध्ये मॉडेल लोड आहे याची खात्री करा
foundry service ps
जर कोणताही मॉडेल दिसत नसेल तर, एक मॉडेल लोड करा:
foundry model run phi-4-mini
टप्पा 2: अनुप्रयोग तयार करा आणि चालवा
वेगळ्या टर्मिनलमध्ये:
cd 04-PracticalSamples/foundrylocal
mvn spring-boot:run
किंवा JAR म्हणून तयार करा आणि चालवा:
mvn clean package
java -jar target/foundry-local-spring-boot-0.0.1-SNAPSHOT.jar
अपेक्षित आउटपुट
=== Foundry Local Demo ===
Calling Foundry Local service...
Sending message: Hello! Can you tell me what you are and what model you're running?
Response from Foundry Local:
Hello! I'm Phi, an AI developed by Microsoft. I can assist with a wide variety of
tasks including answering questions, helping with analysis, creative writing, coding,
and general conversation. How can I help you today?
=========================
पुढील टप्पे
अधिक उदाहरणांसाठी, अध्याय ०४: व्यावहारिक नमुने पहा
समस्या निवारण
सामान्य समस्या
"Connection refused" किंवा "Service unavailable"
- सेवा तपासा:
foundry service status - गरज लागल्यास पुन्हा सुरू करा:
foundry service restart application.propertiesमधील पोर्टfoundry service statusआउटपुटशी जुळतो का तपासा- URL नक्की
/v1सुटलंय का ते पाहा:http://localhost:5273/v1
"No model found" प्रारंभात
- अनुप्रयोग स्वयंचलितपणे मॉडेल शोधतो. किमान एक मॉडेल लोड आहे याची खात्री करा:
foundry service ps - जर कोणताही मॉडेल लोड नसेल:
foundry model run phi-4-mini - जर
application.propertiesमध्ये मॉडेल नाव ओव्हरराईड केले असेल, तर तेfoundry model listशी जुळते का तपासा
"400 Bad Request" त्रुटी
- बेस URL मध्ये
/v1आहे का तपासा:http://localhost:5273/v1 - तुमच्या कोडमध्ये
maxCompletionTokens()वापर करत आहात का, जुनाmaxTokens()नाही
Maven संकलन त्रुटी
- Java 21 किंवा त्याहून वर आहे का:
java -version - क्लीन आणि पुन्हा संकलित करा:
mvn clean compile - डिपेंडन्सी डाउनलोडसाठी इंटरनेट कनेक्शन तपासा
सेवा कनेक्शन समस्या
- जर
Request to local service failedदिसत असेल, तरfoundry service restartकरा - लोड झालेले मॉडेल पहा:
foundry service ps - सेवा लॉग बघा:
foundry service diag
अस्वीकरण: हा दस्तऐवज AI भाषांतर सेवा Co-op Translator वापरून अनुवादित केला आहे. आम्ही अचूकतेसाठी प्रयत्नशील आहोत, तरी कृपया लक्षात घ्या की स्वयंचलित अनुवादांमध्ये चुका किंवा चुका असू शकतात. मूळ दस्तऐवज त्याच्या स्थानिक भाषेमध्ये अधिकारप्राप्त स्रोत मानला जावा लागतो. महत्त्वाची माहिती साठी व्यावसायिक मानव अनुवाद शिफारस केला जातो. या अनुवादाचा वापर करून झालेल्या कोणत्याही गैरसमजुती किंवा चुकीच्या अर्थसंग्रहासाठी आम्ही जबाबदार नाही.