Skip to content

Update #9

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 1, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 34 additions & 11 deletions LINKS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,49 @@

## LangChain4J

- [LangChain4J](https://docs.langchain4j.dev/) [GitHub](https://github.com/langchain4j/langchain4j/)
- [AI Services](https://docs.langchain4j.dev/tutorials/ai-services)
- [RAG](https://docs.langchain4j.dev/tutorials/rag)
- [Kotlin support](https://docs.langchain4j.dev/tutorials/kotlin)

[LangChain4J](https://docs.langchain4j.dev/) ([GitHub](https://github.com/langchain4j/langchain4j/)) is a Java library for building AI agents.
- [langchain4j-kotlin](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-kotlin) - Official LangChain4j Kotlin extensions
- [github.com/kpavlov/langchain4j-kotlin](https://github.com/kpavlov/langchain4j-kotlin) - Unofficial LangChain4j Kotlin extensions. Many of them have already become official 😎
- [Tutorials](https://docs.langchain4j.dev/tutorials)
- [AI Services](https://docs.langchain4j.dev/tutorials/ai-services) Higher-level declarative AI integration.
- [RAG](https://docs.langchain4j.dev/tutorials/rag) - Retrieval-Augmented Generation
- [Kotlin support](https://docs.langchain4j.dev/tutorials/kotlin) in LangChain4j

## AI Frameworks

- [Spring AI](https://spring.io/projects/spring-ai) - Spring AI is an application framework for AI engineering.
- [Eclipse LMOS](https://eclipse.dev/lmos/) - Open-source, cloud-native platform for building and running Multi-Agent systems
- [JetBrains Koog](https://docs.koog.ai/) - Koog is a Kotlin-based framework designed to build and run AI agents entirely in idiomatic Kotlin. It lets you create agents that can interact with tools, handle complex workflows, and communicate with users.
- [Embabel Agent Framework](https://github.com/embabel/embabel-agent) Kotlin framework for authoring agentic flows on the JVM that seamlessly mix LLM-prompted interactions with code and domain models. Supports intelligent path finding towards goals using [Goal Oriented Action Planning (GOAF)](https://medium.com/@vedantchaudhari/goal-oriented-action-planning-34035ed40d0b) algorithm. Written in Kotlin but offers a natural usage model from Java. From [Rod Johnson](https://github.com/johnsonr), the creator of Spring.
- [Xef.ai](https://github.com/xebia-functional/xef) - is an open-source, multiplatform library designed to simplify the integration of modern AI capabilities, such as large language models and image generation, into applications or services.

## Promptfoo

[promptfoo](https://www.promptfoo.dev/docs/intro/) is an open-source CLI and library for evaluating and red-teaming LLM apps.

## Resources

- [Retrieval-augmented generation (RAG)](https://en.wikipedia.org/wiki/Retrieval-augmented_generation)
- Blog post: ["Building effective agents"](https://www.anthropic.com/engineering/building-effective-agents) by Anthropic
- ["Agentic AI with Quarkus"](https://github.com/mariofusco/quarkus-agentic-ai) by Mario Fusco
- Blog post: ["Building effective agents"](https://www.anthropic.com/engineering/building-effective-agents) by Anthropic. Reference
implementations: [anthropic-cookbook/patterns/agents](https://github.com/anthropics/anthropic-cookbook/tree/main/patterns/agents).

- "Agentic AI with Quarkus" by Mario Fusco
- Part 1: [quarkus.io/blog/agentic-ai-with-quarkus](https://quarkus.io/blog/agentic-ai-with-quarkus/)
- Part 2: [quarkus.io/blog/agentic-ai-with-quarkus-p2](https://quarkus.io/blog/agentic-ai-with-quarkus-p2)
- Repository: ["Agentic AI with Quarkus"](https://github.com/mariofusco/quarkus-agentic-ai)

- [Model Context Protocol (MCP)](https://modelcontextprotocol.io/)
- [Awesome MCP Servers](https://mcpservers.org/) - A collection of servers for the Model Context Protocol.
- [github.com/kpavlov/langchain4j-kotlin](https://github.com/kpavlov/langchain4j-kotlin) - Unofficial LangChain4j Kotlin extensions
- [mokksy.dev](https://mokksy.dev/) - AI services simulators for Integration testing
- OpenAI Responses API
- ["New tools for building agents"](https://openai.com/index/new-tools-for-building-agents/)
- [OpenAI Responses API](https://platform.openai.com/docs/api-reference/responses)
- [Responses vs Chat Completions](https://platform.openai.com/docs/guides/responses-vs-chat-completions)



## Tools

[gitleaks](https://github.com/gitleaks/gitleaks) - Gitleaks is a tool for detecting secrets like passwords, API keys, and tokens in git repos, files, and whatever else you wanna throw at it via stdin.
- [Mokksy](https://mokksy.dev/) - HTTP/SSE and AI/LLM services simulators for integration testing.
- [Finchly](https://github.com/kpavlov/finchly) - Utilities for streamlining integration testing in Kotlin
- [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector) is an interactive developer tool for testing and debugging MCP servers.
- [gitleaks](https://github.com/gitleaks/gitleaks) - Gitleaks is a tool for detecting secrets like passwords, API keys, and tokens in git repos, files, and whatever else you wanna throw at it via stdin. Detect your secrets before you commit code to a repo!

6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,16 @@ run-mcp-docker:
mvn -Dquarkus.container-image.group=sample \
-Dquarkus.container-image.tag=latest \
quarkus:image-build && \
docker run --rm -i -p 8090:8090 sample/mcp-time \
docker run --rm -i -p 8090:8090 sample/mcp \
)

.PHONY: promptfoo
promptfoo:
(cd promptfoo && promptfoo eval --watch --output output.yml --no-progress-bar --env-file ./.env)
(cd promptfoo && promptfoo eval --watch --output output.yml --no-progress-bar --env-file .env)

.PHONY: promptfoo-ui
promptfoo-ui:
(cd promptfoo && promptfoo view --yes --env-file ./.env)
(cd promptfoo && promptfoo view --yes --env-file .env)

lint:prepare
ktlint "!**/target/**"
Expand Down
Binary file modified docs/promptfoo-results-cli.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/promptfoo-ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/web-ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions mcp/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>mcp-time</artifactId>
<name>Quarkus MCP Time Server</name>
<artifactId>mcp</artifactId>
<name>Quarkus MCP Server</name>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

Expand Down
6 changes: 3 additions & 3 deletions mcp/src/main/kotlin/mcp/HelloTool.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import io.quarkiverse.mcp.server.ToolArg

class HelloTool {

@Tool(name = "hello", description = "Says hello to someone")
fun time(
@ToolArg(description = "Who you want to be greeted")
@Tool(description = "Returns a greeting for a given target")
fun hello(
@ToolArg(description = "The name or identifier to greet")
who: String
): String = "Hello, $who"
}
4 changes: 2 additions & 2 deletions promptfoo/promptfooconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ defaultTest:

scenarios:
- file://scenarios/chat-memory.yaml
- file://scenarios/time.yaml
- file://scenarios/moderation.yaml
- file://scenarios/rag.yaml
- file://scenarios/stocks.yaml
- file://scenarios/moderation.yaml
- file://scenarios/time.yaml
Loading