ఫౌన్రీ లోకల్ స్ప్రింగ్ బూట్ ట్యూటోరియల్
April 15, 2026 · View on GitHub
సూచిక
- ముందస్తు పరిజ్ఞానం
- ప్రాజెక్ట్ అవలోకనం
- కోడ్ అర్థం చేసుకోవడం
- ఇది ఎలా కలిసి పనిచేస్తుంది
- ఫౌన్రీ లోకల్ సెటప్ చేయడం
- అప్లికేషన్ నడపడం
- నిరాకరించబడిన అవుట్పుట్
- తర్వాతి దశలు
- తొలగింపుల నివారణ
ముందస్తు పరిజ్ఞానం
ఈ ట్యూటోరియల్ ప్రారంభించే ముందు, మీరు నిర్ధారించుకోండి:
- Java 21 లేదా అంతకంటే పైభాగం మీ సిస్టమ్లో ఇన్స్టాల్ అయి ఉందని
- Maven 3.6+ ప్రాజెక్ట్ నిర్మించే కోసం
- Foundry Local ఇన్స్టాల్ చేసి నడుస్తోంది
Foundry Local ఇన్స్టాల్ చేయండి:
గమనిక: Foundry Local CLI Windows మరియు macOS కోసం మాత్రమే అందుబాటులో ఉంటుంది. లినక్స్ కోసం Foundry Local SDKs (Python, JavaScript, C#, Rust) ద్వారా మద్దతు ఉంటుంది.
# విండోస్
winget install Microsoft.FoundryLocal
# మాకోఎస్
brew tap microsoft/foundrylocal
brew install foundrylocal
ఇన్స్టలేషన్ను నిర్ధారించండి:
foundry --version
ప్రాజెక్ట్ అవలోకనం
ఈ ప్రాజెక్ట్ నాలుగు ప్రధాన భాగాల నుండి కూడి ఉంటుంది:
- Application.java - ప్రధాన స్ప్రింగ్ బూట్ అప్లికేషన్ ప్రవేశ బిందువు
- 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ఎండ్పాయింట్ను స్టార్ట్అప్లో క్విల్యరి చేసి మోడల్ను ఆటో-డిటెక్ట్ చేస్తుంది, కాబట్టి మీరు దాన్ని సెట్ చేయాల్సిన అవసరం లేదు. అవసరమైతే స్పష్టంగా సెట్ చేయవచ్చు.
ప్రధాన భావన: స్ప్రింగ్ బూట్ ఈ ప్రాపర్టీస్ను ఆటోమేటిక్గా లోడ్ చేసి, @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);
}
ఇది ఏమి చేస్తుంది:
@SpringBootApplicationస్ప్రింగ్ బూట్ ఆటో-కాన్ఫిగరేషన్ను ఎనేబుల్ చేస్తుందిWebApplicationType.NONEస్ప్రింగ్కు ఇది వెబ్ సర్వర్ కాకుండా కమాండ్-లైన్ యాప్ అని తెలియజేస్తుంది- మెయిన్ మెతడ్ స్ప్రింగ్ అప్లికేషన్ను ప్రారంభిస్తుంది
డెమో రన్నర్:
@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స్ప్రింగ్ నిర్వహించే కంపోనెంట్ సృష్టిస్తుందిCommandLineRunnerస్ప్రింగ్ బూట్ ప్రారంభమైన తర్వాత కోడ్ నడిపిస్తుందిfoundryLocalServiceస్ప్రింగ్ ఆటోమేటిక్గా ఇంజెక్ట్ చేస్తుంది (డిపెండెన్సీ ఇంజెక్షన్)- 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; // ఖాళీగా ఉంటే ఆటోగా గుర్తించబడింది
ఇది ఏమి చేస్తుంది:
@Serviceస్ప్రింగ్కి ఈ క్లాస్ బిజినెస్ లాజిక్ అందిస్తుంది అని చెబుతుంది@Valueapplication.properties నుండి కాన్ఫిగరేషన్ విలువలను ఇంజెక్ట్ చేస్తుంది- మోడల్ ఉంటే ఖాళీగా ఉంటే, ఇది 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స్ప్రింగ్ సర్వీస్ సృష్టించిన తర్వాత ఈ మెతడ్ నడిపిస్తుంది- మోడల్ సెట్ కానప్పుడు, Foundry Local
/v1/modelsఎండ్పాయింట్ను క్విల్యరి చేసి మొదటి లోడ్ అయిన మోడల్ను ఎంచుకుంటుంది - మీరు లోకల్ Foundry Local ఇన్స్టెన్స్ కు పాయింట్ చేసే OpenAI క్లయింట్ సృష్టిస్తుంది
- application.properties నుండి base URL ఇప్పటికే OpenAI API అనుగుణంగా
/v1ను కలిగి ఉంటుంది - API కీ "not-needed"గా సెట్ చేయబడి ఉంది, ఎందుకంటే లోకల్ డెవలప్మెంట్లో ధృవీకరణ అవసరం లేదు
చాట్ మెతడ్:
public String chat(String message) {
try {
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
.model(model) // ఏ ఏఐ మోడల్ ఉపయోగించాలి
.addUserMessage(message) // మీ ప్రశ్న/ప్రాంప్ట్
.maxCompletionTokens(150) // స్పందన పొడవు పరిమితం చేయండి
.temperature(0.7) // సృజనాత్మకత నియంత్రించండి (0.0-1.0)
.build();
ChatCompletion chatCompletion = openAIClient.chat().completions().create(params);
// API ఫలితం నుంచి ఏఐ యొక్క స్పందనను తీసుకోండి
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 మోడల్ ను పేర్కొంటుంది (exact 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: కోర్ స్ప్రింగ్ బూట్ ఫంక్షనాలిటీ అందిస్తుంది
- openai-java: అధికారిక OpenAI జావా SDK API కమ్యూనికేషన్ కోసం
- jackson-databind: API కాల్స్ JSON సీరియలైజేషన్/డీసీరియలైజేషన్ నిర్వహిస్తుంది
ఇది ఎలా కలిసి పనిచేస్తుంది
మీరు అప్లికేషన్ నడపగానే పూర్తి ఫ్లో ఇలా ఉంటుంది:
- స్టార్ట్అప్: స్ప్రింగ్ బూట్ ప్రారంభమై
application.propertiesచదవడం - సర్వీస్ సృష్టి: స్ప్రింగ్
FoundryLocalServiceను సృష్టించి కాన్ఫిగర్ విలువలను ఇంజెక్ట్ చేస్తుంది - మోడల్ గుర్తింపు: మోడల్ సెట్ కానపోతే, సర్వీస్ Foundry Local
/v1/modelsఎండ్పాయింట్ను క్విల్యరి చేసి మొదటి అందుబాటులో ఉన్న మోడల్ను ఆటోమేటిక్ గా ఉపయోగిస్తుంది - క్లయింట్ సెటప్:
@PostConstructOpenAI క్లయింట్ను Foundry Localతో కనెక్ట్ అయ్యేటట్లు ఇనిషియలైజ్ చేస్తుంది - డెమో అమలు:
CommandLineRunnerస్టార్ట్అప్ తర్వాత నడుస్తుంది - AI కాల్: డెమో
foundryLocalService.chat()మెతడ్ను టెస్ట్ మెసేజ్తో పిలుస్తుంది - API అభ్యర్థన: సర్వీస్ OpenAI అనుగుణంగా అభ్యర్థనను తయారు చేసి Foundry Localకి పంపిస్తుంది
- ప్రతిస్పందన ప్రాసెసింగ్: సర్వీస్ AI ప్రతిస్పందన తీసుకుంటుంది మరియు వాపాస్ చేస్తుంది
- ప్రదర్శన: అప్లికేషన్ ప్రతిస్పందనను ప్రింట్ చేసి బయటకు వస్తుంది
ఫౌన్రీ లోకల్ సెటప్ చేయడం
-
ముందస్తు పరిజ్ఞానం విభాగంలో ఇచ్చిన సూచనల ప్రకారం 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?
=========================
తర్వాతి దశలు
మరిన్ని ఉదాహరణల కోసం, చూడండి అధ్యాయం 04: ప్రాక్టికల్ సామ్పిల్స్
తొలగింపుల నివారణ
సాధారణ సమస్యలు
"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లో మోడల్ పేరును మానually మార్పిడి చేసినట్లయితే, అదిfoundry model listలో సరిపోలుతుందో చూసుకోండి
"400 Bad Request" లోపాలు
- base 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 ఉపయోగించి అనువదಿಸಲಾಗಿದೆ. మేము సరిగ్గా ఉండేందుకు ప్రయత్నిస్తున్నప్పటికీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా అకురసిటీలు ఉండవచ్చును. స్థానిక భాషలోని అసలు డాక్యుమెంట్ను అధికారిక మూలంగా పరిగణించాలి. కీలకమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదాన్ని సిఫార్సు చేస్తాము. ఈ అనువాదంలో ఉపయోగంతో జరిగే ఏదైనా తప్పుదోవ లేదా అర్థ విఫలమయ్యే దుష్ప్రభావాలకు మేము బాధ్యత వహించమని కోరుకుంటాము.