Foundry kohalik Spring Booti juhend
April 15, 2026 · View on GitHub
Sisukord
- Eeltingimused
- Projekti ülevaade
- Koodi mõistmine
- Kuidas see kõik koos toimib
- Foundry Local seadistamine
- Rakenduse käivitamine
- Oodatav väljund
- Järgmised sammud
- Tõrkeotsing
Eeltingimused
Enne selle juhendi alustamist veendu, et sul on:
- Java 21 või uuem süsteemi installitud
- Maven 3.6+ projekti ehitamiseks
- Foundry Local paigaldatud ja töötamas
Foundry Local paigaldamine:
Märkus: Foundry Local CLI on saadaval ainult Windowsi ja macOSi jaoks. Linuxit toetatakse Foundry Local SDKde (Python, JavaScript, C#, Rust) kaudu.
# Windows
winget install Microsoft.FoundryLocal
# macOS
brew tap microsoft/foundrylocal
brew install foundrylocal
Kontrolli paigaldust:
foundry --version
Projekti ülevaade
See projekt koosneb neljast põhikomponendist:
- Application.java - Põhirakenduse Spring Booti sissepääsupunkt
- FoundryLocalService.java - Teenuse kiht, mis haldab AI suhtlust
- application.properties - Foundry Local ühenduse konfiguratsioon
- pom.xml - Maveni sõltuvused ja projekti konfiguratsioon
Koodi mõistmine
1. Rakenduse konfiguratsioon (application.properties)
Fail: 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
Mida see teeb:
- base-url: Määrab, kus Foundry Local töötab, sealhulgas
/v1tee OpenAI API jaoks. Vaiketrepid on5273. Kui port erineb, kontrolli seda käsugafoundry service status. - model (valikuline): AI mudeli nimi tekstigeneratsiooniks. Vaikimisi rakendus tuvastab mudeli automaatselt pärides Foundry Local
/v1/modelslõpp-punkti käivitamisel, nii et sul ei ole vaja seda ise määrata. Võid selle siiski vajadusel käsitsi seada automaatse tuvastuse ülekirjutamiseks.
Oluline mõiste: Spring Boot laadib need omadused automaatselt ja teeb need rakendusele kättesaadavaks @Value annotatsiooni kaudu.
2. Põhirakenduse klass (Application.java)
Fail: 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); // Veebiserverit pole vaja
app.run(args);
}
Mida see teeb:
@SpringBootApplicationlubab Spring Booti automaatse konfiguratsiooniWebApplicationType.NONEütleb Springile, et tegu on käsurea rakendusega, mitte veebiserveriga- Põhimeetod käivitab Springi rakenduse
Demo käivitaja:
@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("=========================");
};
}
Mida see teeb:
@Beanloob komponendi, mida Spring haldabCommandLineRunnerkäivitab koodi pärast Spring Booti käivitamistfoundryLocalServicesüstitakse automaatselt Springi poolt (sõltuvuste süstimine)- Saadab test-sõnumi AI-le ja kuvab vastuse
3. AI teenuse kiht (FoundryLocalService.java)
Fail: src/main/java/com/example/FoundryLocalService.java
Konfiguratsiooni süstimine:
@Service
public class FoundryLocalService {
@Value("${foundry.local.base-url:http://localhost:5273/v1}")
private String baseUrl;
@Value("${foundry.local.model:}")
private String model; // Kui tühi, tuvastatakse automaatselt
Mida see teeb:
@Serviceütleb Springile, et see klass pakub äriloogikat@Valuesüstib väärtusi application.properties failist- Mudeli vaikimisi väärtus on tühi, mis käivitamisel põhjustab automaatse tuvastuse Foundry Localist. See tähendab, et rakendus töötab suvalise Foundry Locali mudeliga ilma käsitsi konfigureerimiseta.
Kliendi initsialiseerimine:
@PostConstruct
public void init() {
// Automaatne mudeli tuvastus Foundry kohalikust, kui pole selgesõnaliselt seadistatud
if (model == null || model.isBlank()) {
model = detectModel();
}
this.openAIClient = OpenAIOkHttpClient.builder()
.baseUrl(baseUrl) // Põhi-URL sisaldab konfiguratsioonist juba /v1
.apiKey("not-needed") // Kohalik server ei vaja tegelikku API võtit
.build();
}
Mida see teeb:
@PostConstructkäivitab selle meetodi pärast teenuse loomist Springi poolt- Kui mudelit pole seadistatud, küsib Foundry Locali
/v1/modelslõpp-punktist ja valib esimese laetud mudeli - Loob OpenAI kliendi, mis on suunatud sinu kohalikule Foundry Locali instantsile
- Base URL
application.propertiesfailist sisaldab juba/v1OpenAI API ühilduvuse jaoks - API võti on seatud "not-needed", sest lokaalarendus ei nõua autentimist
Vestluse meetod:
public String chat(String message) {
try {
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
.model(model) // Millist tehisintellekti mudelit kasutada
.addUserMessage(message) // Teie küsimus/käsk
.maxCompletionTokens(150) // Piira vastuse pikkust
.temperature(0.7) // Kontrolli loovust (0.0-1.0)
.build();
ChatCompletion chatCompletion = openAIClient.chat().completions().create(params);
// Eristage tehisintellekti vastus API tulemusest
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);
}
}
Mida see teeb:
- ChatCompletionCreateParams: Konfigureerib AI päringu
model: Määrab, millist AI mudelit kasutada (peab täpselt vastamafoundry model listIDle)addUserMessage: Lisab sinu sõnumi vestlussemaxCompletionTokens: Piirab vastuse pikkust (ressursside säästmiseks)temperature: Kontrollib juhuslikkust (0,0 = deterministlik, 1,0 = loominguline)
- API Päring: Saadab päringu Foundry Localile
- Vastuse käsitlemine: Turvaliselt eraldab AI-st saadud tekstivastuse
- Vigade käsitlemine: Pakub kasulikke veateateid errorite käitlemisel
4. Projekti sõltuvused (pom.xml)
Põhisõltuvused:
<!-- 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>
Mida need teevad:
- spring-boot-starter: Pakub Spring Booti põhifunktsionaalsust
- openai-java: OpenAI ametlik Java SDK API suhtluseks
- jackson-databind: Tegeleb JSONi serialiseerimisega/deserialiseerimisega API kõnede jaoks
Kuidas see kõik koos toimib
Siin on kogu töövoog, kui käivitad rakenduse:
- Käivitamine: Spring Boot käivitub ja loeb
application.properties - Teenuse loomine: Spring loob
FoundryLocalServiceja süstib konfiguratsiooniväärtused - Mudeli tuvastus: Kui mudelit pole konfigureeritud, pärib teenus Foundry Locali
/v1/modelslõpp-punktist ning kasutab automaatselt esimest saadaolevat mudelit - Kliendi seadistamine:
@PostConstructinitsialiseerib OpenAI kliendi ühenduseks Foundry Localiga - Demo täitmine:
CommandLineRunnerkäivitub pärast käivitamist - AI kõne: Demo kutsub
foundryLocalService.chat()test-sõnumiga - API päring: Teenus koostab ja saadab OpenAI ühilduva päringu Foundry Localile
- Vastuse töötlemine: Teenus eraldab ja tagastab AI vastuse
- Kuvamine: Rakendus prindib vastuse ja lõpetab töö
Foundry Local seadistamine
-
Paigalda Foundry Local juhiste järgi Eeltingimused sektsioonis.
-
Käivita teenus (kui see veel ei tööta):
foundry service start -
Kontrolli teenuse staatust, veendumaks, et teenus töötab ja märgi üles port:
foundry service status -
Laadi alla ja käivita mudel (laetakse esimesel käivitamisel alla, järgnevatel kordadel on vahemälus):
foundry model run phi-4-miniSee avab interaktiivse vestluse. Väljumiseks kasuta
Ctrl+C. Mudel jääb teenusesse laetuks.Näpunäide: Kasuta
foundry model list, et näha kõiki saadaolevaid mudeleid. Asendaphi-4-minisuvalise kataloogi aliasega (ntqwen2.5-0.5bväiksema/kiirema mudeli jaoks). -
Kontrolli, et mudel on laetud:
foundry service ps -
Värskenda vajadusel
application.properties:- Vaikimisi
base-url(http://localhost:5273/v1) vastab vaikimisi CLI pordile. Muuda ainult siis, kuifoundry service statusnäitab mõnda teist porti. - Mudel tuvastatakse käivitamisel automaatselt — konfiguratsiooni pole vaja muuta.
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 - Vaikimisi
Rakenduse käivitamine
Samm 1: Veendu, et Foundry Locali mudel on laetud
foundry service ps
Kui mudeleid ei kuvata, laadi üks mudel:
foundry model run phi-4-mini
Samm 2: Ehitamine ja käivitamine
Teises terminalis:
cd 04-PracticalSamples/foundrylocal
mvn spring-boot:run
Või ehita ja käivita JAR failina:
mvn clean package
java -jar target/foundry-local-spring-boot-0.0.1-SNAPSHOT.jar
Oodatav väljund
=== 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?
=========================
Järgmised sammud
Lisaks näidetele vaata Peatükk 04: Praktilised näited
Tõrkeotsing
Levinumad probleemid
"Connection refused" või "Service unavailable"
- Kontrolli teenust:
foundry service status - Taaskäivitamine vajadusel:
foundry service restart - Veendu, et port
application.propertiesfailis vastabfoundry service statusväljundile - Kontrolli, et URL lõpeb
/v1-ga:http://localhost:5273/v1
"No model found" käivitamisel
- Rakendus tuvastab mudeli automaatselt. Veendu, et vähemalt üks mudel on laetud:
foundry service ps - Kui mudeleid pole laetud:
foundry model run phi-4-mini - Kui oled mudeli nime käsitsi seadnud
application.propertiesfailis, kontrolli, et see vastabfoundry model listnimele
"400 Bad Request" vead
- Kontrolli, et base URL sisaldab
/v1:http://localhost:5273/v1 - Veendu, et kasutad koodis
maxCompletionTokens()(mitte aegunudmaxTokens())
Maveni kompileerimisvead
- Veendu, et Java versioon on 21 või uuem:
java -version - Puhasta ja ehita uuesti:
mvn clean compile - Kontrolli internetiühendust sõltuvuste allalaadimiseks
Teenusega ühenduse probleemid
- Kui näed „Request to local service failed“, käivita
foundry service restart - Kontrolli laetud mudeleid:
foundry service ps - Vaata teenuse logisid:
foundry service diag
Vastutusest loobumine: See dokument on tõlgitud kasutades tehisintellekti tõlketeenust Co-op Translator. Kuigi me püüame täpsust, palun arvestage, et automatiseeritud tõlgetes võib esineda vigu või ebatäpsusi. Originaaldokument selle emakeeles tuleks lugeda autoriteetseks allikaks. Olulise info puhul on soovitatav kasutada professionaalset inimtõlget. Me ei vastuta võimalike arusaamatuste ega valesti tõlgenduste eest, mis võivad tuleneda selle tõlke kasutamisest.