이 μ„Ήμ…˜μ—μ„œλŠ” Spring AI μ‚¬μš©μ„ μ‹œμž‘ν•˜λŠ” 방법에 λŒ€ν•œ μ‹œμž‘μ μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

ν•„μš”μ— 따라 λ‹€μŒ μ„Ήμ…˜μ˜ 각 단계λ₯Ό 따라야 ν•©λ‹ˆλ‹€.

λ…ΈνŠΈ

Spring AIλŠ” Spring Boot 3.2.x 및 3.3.xλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.

μŠ€ν”„λ§ μ΄ˆκΈ°ν™”

start.spring.io둜 μ΄λ™ν•˜μ—¬ μƒˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ‚¬μš©ν•  AI λͺ¨λΈκ³Ό 벑터 μŠ€ν† μ–΄λ₯Ό μ„ νƒν•˜μ„Έμš”.

λ§ˆμΌμŠ€ν†€ 및 μŠ€λƒ…μƒ· 리포지토리 μΆ”κ°€ν•˜κΈ°

쒅속성 μŠ€λ‹ˆνŽ«μ„ 직접 μΆ”κ°€ν•˜λ €λ©΄ λ‹€μŒ μ„Ήμ…˜μ˜ 지침을 λ”°λ₯΄μ„Έμš”.

λ§ˆμΌμŠ€ν†€ 및 μŠ€λƒ…μƒ· 버전을 μ‚¬μš©ν•˜λ €λ©΄ λΉŒλ“œ νŒŒμΌμ— Spring λ§ˆμΌμŠ€ν†€ 및/λ˜λŠ” μŠ€λƒ…μƒ· 리포지토리에 λŒ€ν•œ μ°Έμ‘°λ₯Ό μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Maven의 경우 ν•„μš”μ— 따라 λ‹€μŒ 리포지토리 μ •μ˜λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€:

<repositories>
	<repository>
		<id>spring-milestones</id>
		<name>Spring Milestones</name>
		<url>https://repo.spring.io/milestone</url>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</repository>
	<repository>
		<id>spring-snapshots</id>
		<name>Spring Snapshots</name>
		<url>https://repo.spring.io/snapshot</url>
		<releases>
			<enabled>false</enabled>
		</releases>
	</repository>
</repositories>

Gradle의 경우 ν•„μš”μ— 따라 λ‹€μŒ 리포지토리 μ •μ˜λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€:

repositories {
  mavenCentral()
  maven { url 'https://repo.spring.io/milestone' }
  maven { url 'https://repo.spring.io/snapshot' }
}

쒅속성 관리

Spring AI BOM(Bill of Materials)은 Spring AI의 νŠΉμ • λ¦΄λ¦¬μŠ€μ—μ„œ μ‚¬μš©λ˜λŠ” λͺ¨λ“  μ’…μ†μ„±μ˜ ꢌμž₯ 버전을 μ„ μ–Έν•©λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λΉŒλ“œ μŠ€ν¬λ¦½νŠΈμ—μ„œ BOM을 μ‚¬μš©ν•˜λ©΄ 쒅속성 버전을 직접 μ§€μ •ν•˜κ³  μœ μ§€ 관리할 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. λŒ€μ‹  μ‚¬μš© 쀑인 BOM 버전에 따라 μ‚¬μš©λ˜λŠ” 쒅속성 버전이 κ²°μ •λ©λ‹ˆλ‹€. λ˜ν•œ μž¬μ •μ˜ν•˜μ§€ μ•ŠλŠ” ν•œ 기본적으둜 μ§€μ›λ˜κ³  ν…ŒμŠ€νŠΈλœ 쒅속성 버전을 μ‚¬μš©ν•˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.

Maven μ‚¬μš©μžλΌλ©΄ pom.xml νŒŒμΌμ— λ‹€μŒμ„ μΆ”κ°€ν•˜μ—¬ BOM을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Gradle μ‚¬μš©μžλŠ” λ˜ν•œ Maven BOM을 μ‚¬μš©ν•˜μ—¬ 쒅속성 μ œμ•½ 쑰건을 μ„ μ–Έν•˜κΈ° μœ„ν•œ Gradle(5.0 이상) κΈ°λ³Έ 지원을 ν™œμš©ν•˜μ—¬ Spring AI BOM을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” Gradle λΉŒλ“œ 슀크립트의 쒅속성 μ„Ήμ…˜μ— β€˜ν”Œλž«νΌβ€™ 쒅속성 ν•Έλ“€λŸ¬ λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ κ΅¬ν˜„λ©λ‹ˆλ‹€. μ•„λž˜ μŠ€λ‹ˆνŽ«μ—μ„œ λ³Ό 수 μžˆλ“―μ΄, κ·Έ λ‹€μŒμ—λŠ” μ‚¬μš©ν•˜λ €λŠ” ν•˜λ‚˜ μ΄μƒμ˜ spring-ai λͺ¨λ“ˆμ— λŒ€ν•œ μŠ€νƒ€ν„° 쒅속성을 버전 없이 μ„ μ–Έν•  수 μžˆμŠ΅λ‹ˆλ‹€(예: spring-ai-openai).

dependencies {
  implementation platform("org.springframework.ai:spring-ai-bom:1.0.0-SNAPSHOT")
  // Replace the following with the starter dependencies of specific modules you wish to use
  implementation 'org.springframework.ai:spring-ai-openai'
}

νŠΉμ • μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•œ 쒅속성 μΆ”κ°€

λ¬Έμ„œμ˜ λ‹€μŒ 각 μ„Ήμ…˜μ€ ν”„λ‘œμ νŠΈ λΉŒλ“œ μ‹œμŠ€ν…œμ— μΆ”κ°€ν•΄μ•Ό ν•˜λŠ” 쒅속성을 λ³΄μ—¬μ€λ‹ˆλ‹€.

μƒ˜ν”Œ ν”„λ‘œμ νŠΈ

GitHubμ—μ„œ μ΄λŸ¬ν•œ ν”„λ‘œμ νŠΈλ₯Ό λ³΅μ œν•˜μ—¬ μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν•­κ³΅νŽΈ μ˜ˆμ•½ λ„μš°λ―Έ

github.com/tzolov/playground-flight-booking

μ΄μš©μ•½κ΄€(검색 증강 생성, RAG)에 μ•‘μ„ΈμŠ€ν•˜κ³ , μž‘μ—…(ν•¨μˆ˜ 호좜)을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ 도ꡬ(Java λ©”μ„œλ“œ)에 μ•‘μ„ΈμŠ€ν•˜λ©°, LLM을 μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžμ™€ μƒν˜Έ μž‘μš©ν•˜λŠ” AI 기반 μ‹œμŠ€ν…œ

OpenAI

Azure OpenAI