Skip to content

Commit 5540ade

Browse files
committed
Add title generator bean to autoconfigure
1 parent 6b5f94e commit 5540ade

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

embabel-chat-store-autoconfigure/src/main/kotlin/com/embabel/chat/store/autoconfigure/ChatStoreAutoConfiguration.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
*/
1616
package com.embabel.chat.store.autoconfigure
1717

18+
import com.embabel.agent.api.common.Ai
1819
import com.embabel.chat.ConversationFactory
1920
import com.embabel.chat.ConversationFactoryProvider
2021
import com.embabel.chat.MapConversationFactoryProvider
22+
import com.embabel.chat.store.adapter.LlmTitleGenerator
2123
import com.embabel.chat.store.adapter.StoredConversationFactory
2224
import com.embabel.chat.store.adapter.TitleGenerator
2325
import com.embabel.chat.store.event.SessionEventAwaiter
@@ -26,6 +28,7 @@ import com.embabel.chat.support.InMemoryConversationFactory
2628
import org.slf4j.LoggerFactory
2729
import org.springframework.beans.factory.annotation.Autowired
2830
import org.springframework.boot.autoconfigure.AutoConfiguration
31+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean
2932
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass
3033
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
3134
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
@@ -65,6 +68,22 @@ open class ChatStoreAutoConfiguration {
6568

6669
private val logger = LoggerFactory.getLogger(ChatStoreAutoConfiguration::class.java)
6770

71+
/**
72+
* Creates an [LlmTitleGenerator] that uses [Ai] to generate session titles.
73+
*
74+
* Only created if:
75+
* - No existing [TitleGenerator] bean
76+
* - An [Ai] bean is available (from embabel-agent)
77+
*
78+
* Apps can override by defining their own [TitleGenerator] bean.
79+
*/
80+
@Bean
81+
@ConditionalOnMissingBean(TitleGenerator::class)
82+
@ConditionalOnBean(Ai::class)
83+
open fun titleGenerator(ai: Ai): TitleGenerator = LlmTitleGenerator { prompt ->
84+
ai.withDefaultLlm().generateText(prompt)
85+
}
86+
6887
/**
6988
* Creates a [StoredConversationFactory] for persistent conversations.
7089
*

embabel-chat-store/pom.xml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,15 @@
104104
<groupId>org.jetbrains.kotlin</groupId>
105105
<artifactId>kotlin-maven-plugin</artifactId>
106106
</plugin>
107+
<plugin>
108+
<groupId>org.apache.maven.plugins</groupId>
109+
<artifactId>maven-compiler-plugin</artifactId>
110+
<configuration>
111+
<source>21</source>
112+
<target>21</target>
113+
</configuration>
114+
</plugin>
107115
</plugins>
108116
</build>
109117

110-
</project>
118+
</project>

0 commit comments

Comments
 (0)