總覽
Koog 是一個基於 Kotlin 的框架,旨在完全以慣用 Kotlin 語法建立並執行 AI 代理。它讓您能夠建立可與工具互動、處理複雜工作流程並與使用者溝通的代理。
該框架支援以下類型的代理:
- 單次執行代理,具有最少設定,處理單一輸入並提供回應。此類代理在單一工具呼叫週期內運作,以完成其任務並提供回應。
- 複雜工作流程代理,具有進階功能,支援自訂策略和設定。
主要功能
Koog 的主要功能包括:
- 多平台開發:透過 Kotlin Multiplatform 在 JVM、JS、WasmJS、Android 和 iOS 目標上部署代理。
- 可靠性與容錯能力:透過內建重試處理故障,並利用代理持久化功能在執行期間的特定點恢復代理狀態。
- 智慧歷史壓縮:使用先進的內建歷史壓縮技術,在長期對話中保持上下文的同時優化令牌使用。
- 企業級整合:利用與 Spring Boot 和 Ktor 等流行 JVM 框架的整合,將 Koog 嵌入您的應用程式。
- 透過 OpenTelemetry 匯出器的可觀察性:透過內建支援流行的可觀察性提供者 (W&B Weave, Langfuse) 監控和偵錯應用程式。
- LLM 切換與無縫歷史適應:可以在任何時候切換到不同的 LLM,而不會丟失現有的對話歷史,或在多個 LLM 提供者之間重新路由。
- 與 JVM 和 Kotlin 應用程式的整合:使用專為 JVM 和 Kotlin 開發者設計的慣用、型別安全 Kotlin DSL 建立 AI 代理。
- Model Context Protocol 整合:在 AI 代理中使用 Model Context Protocol (MCP) 工具。
- 知識檢索與記憶:使用向量嵌入、分級文件儲存和共享代理記憶,在對話中保留和檢索知識。
- 強大串流 API:透過串流支援和平行工具呼叫,即時處理回應。
- 模組化功能系統:透過可組合架構自訂代理功能。
- 彈性圖形工作流程:使用直觀的圖形化工作流程設計複雜的代理行為。
- 自訂工具建立:透過存取外部系統和 API 的工具增強您的代理。
- 全面追蹤:透過詳細且可設定的追蹤,偵錯並監控代理執行。
可用的 LLM 提供者和平台
您可以用來為代理功能提供動力的 LLM 提供者和平台:
- OpenAI
- Anthropic
- DeepSeek
- OpenRouter
- Ollama
- Bedrock
如需有關如何將這些提供者與專用 LLM 用戶端搭配使用的詳細指南,請參閱 使用 LLM 用戶端執行提示。
安裝
要使用 Koog,您需要在建置設定中包含所有必要的依賴項。
Gradle
Gradle (Kotlin DSL)
將依賴項新增至
build.gradle.kts
檔案:dependencies { implementation("ai.koog:koog-agents:LATEST_VERSION") }
確保您的儲存庫列表中包含
mavenCentral()
。
Gradle (Groovy)
將依賴項新增至
build.gradle
檔案:dependencies { implementation 'ai.koog:koog-agents:LATEST_VERSION' }
確保您的儲存庫列表中包含
mavenCentral()
。
Maven
將依賴項新增至
pom.xml
檔案:<dependency> <groupId>ai.koog</groupId> <artifactId>koog-agents-jvm</artifactId> <version>LATEST_VERSION</version> </dependency>
確保您的儲存庫列表中包含
mavenCentral
。
快速入門範例
為了幫助您開始使用 AI 代理,這是一個單次執行代理的快速範例:
NOTE
在執行範例之前,請將相應的 API 金鑰設定為環境變數。詳細資訊請參閱 開始使用。
kotlin
fun main() {
runBlocking {
val apiKey = System.getenv("OPENAI_API_KEY") // 或 Anthropic、Google、OpenRouter 等。
val agent = AIAgent(
promptExecutor = simpleOpenAIExecutor(apiKey), // 或 Anthropic、Google、OpenRouter 等。
systemPrompt = "您是一個樂於助人的助手。簡潔地回答用戶問題。",
llmModel = OpenAIModels.Chat.GPT4o
)
val result = agent.run("Hello! How can you help me?")
println(result)
}
}
更多詳細資訊,請參閱 開始使用。