Skip to content

Conversation

EugeneTheDev
Copy link
Contributor

@EugeneTheDev EugeneTheDev commented Jun 11, 2025

This PR improves on the changes made in #195 and improves existing attachments API, making it more clean, straightforward and versatile. Support providing binary data directly for all attachment types to support more cases, e.g. mobile devices or server that need to retrieve attachment content their own custom way. Also refactor the code, making it more structured and extensible.
Fixes #269, fixes #253

* @property id The unique identifier for the prompt.
* @property params The language model pa rameters associated with the prompt. Defaults to [LLMParams].
*/
// FIXME move it from dsl package up to the module root package?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not related directly to this PR, but I've noticed it while preparing it and want to raise a question. Currently, Prompt class is located in the dsl package, which seems kinda strange, since it's not about DSL, but rather a core structure of this whole module, a prompt model. So I think it's better to move it to the root module package or at least together with other models to model

Copy link

github-actions bot commented Jun 11, 2025

Qodana for JVM

105 new problems were found

Inspection name Severity Problems
Check Kotlin and Java source code coverage 🔶 Warning 99
Vulnerable imported dependency 🔶 Warning 4
Unused import directive 🔶 Warning 2
@@ Code coverage @@
+ 50% total lines covered
5804 lines analyzed, 2943 lines covered
# Calculated according to the filters of your coverage tool

☁️ View the detailed Qodana report

Detected 116 dependencies

Third-party software list

This page lists the third-party software dependencies used in koog-agents

Dependency Version Licenses
annotations 13.0 Apache-2.0
annotations 23.0.0 Apache-2.0
atomicfu-js 0.26.1 Apache-2.0
config 1.4.3 Apache-2.0
dokka-core 2.0.0 Apache-2.0
dokka-gradle-plugin 2.0.0 Apache-2.0
fus-statistics-gradle-plugin 2.1.21 Apache-2.0
jackson-annotations 2.12.7 Apache-2.0
jackson-core 2.12.7 Apache-2.0
jackson-databind 2.12.7.1 Apache-2.0
jackson-dataformat-xml 2.12.7 Apache-2.0
jackson-module-jaxb-annotations 2.12.7 Apache-2.0
jackson-module-kotlin 2.12.7 Apache-2.0
jakarta.activation-api 1.2.1 BSD-3-Clause
jakarta.xml.bind-api 2.3.2 BSD-3-Clause
jet-sign 45.47 Apache-2.0
kotlin-dom-api-compat 2.1.21 Apache-2.0
kotlin-gradle-plugin-api 2.1.21 Apache-2.0
kotlin-gradle-plugin-model 2.1.21 Apache-2.0
kotlin-gradle-plugin 2.1.21 Apache-2.0
kotlin-logging-js 7.0.7 Apache-2.0
kotlin-logging-jvm 7.0.7 Apache-2.0
kotlin-logging 7.0.7 Apache-2.0
kotlin-reflect 2.0.21 Apache-2.0
kotlin-reflect 2.1.21 Apache-2.0
kotlin-sdk-jvm 0.5.0 MIT
kotlin-stdlib-js 2.1.21 Apache-2.0
kotlin-stdlib 2.0.21 Apache-2.0
kotlin-stdlib 2.1.21 Apache-2.0
kotlinx-coroutines-core-js 1.10.2 Apache-2.0
kotlinx-coroutines-core-jvm 1.10.2 Apache-2.0
kotlinx-coroutines-core-jvm 1.8.0 Apache-2.0
kotlinx-coroutines-core 1.10.2 Apache-2.0
kotlinx-coroutines-reactive 1.10.2 Apache-2.0
kotlinx-coroutines-slf4j 1.10.2 Apache-2.0
kotlinx-datetime-js 0.6.2 Apache-2.0
kotlinx-datetime-jvm 0.6.2 Apache-2.0
kotlinx-datetime 0.6.2 Apache-2.0
kotlinx-io-bytestring-js 0.7.0 Apache-2.0
kotlinx-io-bytestring-jvm 0.7.0 Apache-2.0
kotlinx-io-bytestring 0.7.0 Apache-2.0
kotlinx-io-core-js 0.7.0 Apache-2.0
kotlinx-io-core-jvm 0.7.0 Apache-2.0
kotlinx-io-core 0.7.0 Apache-2.0
kotlinx-serialization-core-js 1.8.1 Apache-2.0
kotlinx-serialization-core-jvm 1.8.1 Apache-2.0
kotlinx-serialization-core 1.8.1 Apache-2.0
kotlinx-serialization-json-io-js 1.7.3 Apache-2.0
kotlinx-serialization-json-io-jvm 1.8.1 Apache-2.0
kotlinx-serialization-json-io 1.7.3 Apache-2.0
kotlinx-serialization-json-js 1.8.1 Apache-2.0
kotlinx-serialization-json-jvm 1.8.1 Apache-2.0
kotlinx-serialization-json 1.8.1 Apache-2.0
ktor-client-cio-jvm 3.0.3 Apache-2.0
ktor-client-content-negotiation-js 3.0.3 Apache-2.0
ktor-client-content-negotiation-jvm 3.0.3 Apache-2.0
ktor-client-content-negotiation 3.0.3 Apache-2.0
ktor-client-core-js 3.0.3 Apache-2.0
ktor-client-core-jvm 3.0.3 Apache-2.0
ktor-client-core 3.0.3 Apache-2.0
ktor-client-js-js 3.0.3 Apache-2.0
ktor-client-logging-js 3.0.3 Apache-2.0
ktor-client-logging-jvm 3.0.3 Apache-2.0
ktor-client-logging 3.0.3 Apache-2.0
ktor-events-js 3.0.3 Apache-2.0
ktor-events-jvm 3.0.3 Apache-2.0
ktor-events 3.0.3 Apache-2.0
ktor-http-cio-js 3.0.3 Apache-2.0
ktor-http-cio-jvm 3.0.3 Apache-2.0
ktor-http-cio 3.0.3 Apache-2.0
ktor-http-js 3.0.3 Apache-2.0
ktor-http-jvm 3.0.3 Apache-2.0
ktor-http 3.0.3 Apache-2.0
ktor-io-js 3.0.3 Apache-2.0
ktor-io-jvm 3.0.3 Apache-2.0
ktor-io 3.0.3 Apache-2.0
ktor-network-jvm 3.0.3 Apache-2.0
ktor-network-tls-jvm 3.0.3 Apache-2.0
ktor-serialization-js 3.0.3 Apache-2.0
ktor-serialization-jvm 3.0.3 Apache-2.0
ktor-serialization-kotlinx-js 3.0.3 Apache-2.0
ktor-serialization-kotlinx-json-js 3.0.3 Apache-2.0
ktor-serialization-kotlinx-json-jvm 3.0.3 Apache-2.0
ktor-serialization-kotlinx-json 3.0.3 Apache-2.0
ktor-serialization-kotlinx-jvm 3.0.3 Apache-2.0
ktor-serialization-kotlinx 3.0.3 Apache-2.0
ktor-serialization 3.0.3 Apache-2.0
ktor-server-cio-jvm 3.0.3 Apache-2.0
ktor-server-core-js 3.0.3 Apache-2.0
ktor-server-core-jvm 3.0.3 Apache-2.0
ktor-server-core 3.0.3 Apache-2.0
ktor-server-sse-js 3.0.3 Apache-2.0
ktor-server-sse-jvm 3.0.3 Apache-2.0
ktor-server-sse 3.0.3 Apache-2.0
ktor-server-websockets-jvm 3.0.2 Apache-2.0
ktor-sse-js 3.0.3 Apache-2.0
ktor-sse-jvm 3.0.3 Apache-2.0
ktor-sse 3.0.3 Apache-2.0
ktor-utils-js 3.0.3 Apache-2.0
ktor-utils-jvm 3.0.3 Apache-2.0
ktor-utils 3.0.3 Apache-2.0
ktor-websocket-serialization-js 3.0.3 Apache-2.0
ktor-websocket-serialization-jvm 3.0.3 Apache-2.0
ktor-websocket-serialization 3.0.3 Apache-2.0
ktor-websockets-js 3.0.3 Apache-2.0
ktor-websockets-jvm 3.0.3 Apache-2.0
ktor-websockets 3.0.3 Apache-2.0
lettuce-core 6.5.5.release MIT
logback-classic 1.5.13 EPL-1.0
LGPL-2.0-or-later
logback-core 1.5.13 EPL-1.0
LGPL-2.0-or-later
netty-common 4.1.118.final Apache-2.0
reactive-streams 1.0.4 MIT-0
reactor-core 3.6.6 Apache-2.0
slf4j-api 2.0.16 MIT
stax2-api 4.2.1 BSD-2-Clause
BSD-3-Clause
woodstox-core 6.2.4 Apache-2.0
Contact Qodana team

Contact us at [email protected]

Copy link
Collaborator

@Ololoshechkin Ololoshechkin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@EugeneTheDev please change the method names to shorter polymorphic ones. Other things LGTM

@Ololoshechkin
Copy link
Collaborator

@EugeneTheDev could you also please check Prompt.toOllamaChatMessages() , there is this thing:

is Message.User -> OllamaChatMessageDTO(
                role = "user",
                content = message.content,
                images = message.mediaContent
                    .filterIsInstance<MediaContent.Image>().map { it.toBase64() }.takeIf { it.isNotEmpty() },
)

So either Ollama doesn't support anything but base64 -- then we have to also write this in KDocs.
Or it does -- then let's just add the support here in this MR

@EugeneTheDev EugeneTheDev force-pushed the eugenethedev/improve-media-content branch from e4b003a to 1a3a957 Compare June 21, 2025 21:38
@EugeneTheDev EugeneTheDev merged commit dfae038 into develop Jun 21, 2025
5 checks passed
@EugeneTheDev EugeneTheDev deleted the eugenethedev/improve-media-content branch June 21, 2025 22:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve attachments (media content) support in prompt messages Support data: URLs for media attachments
3 participants