Skip to content

Commit aee9252

Browse files
committed
Update SE and MP examples for metrics
1 parent 72127d9 commit aee9252

File tree

7 files changed

+69
-23
lines changed

7 files changed

+69
-23
lines changed

examples/integrations/langchain4j/coffee-shop-assistant-mp/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,31 @@ Here are some example queries you can try:
6464
- **"Can I order a coffee and a cookie?"**
6565
- *Expected Response:*
6666
*"Your order for a coffee and a chocolate chip cookie has been saved. The total is $5.00. Would you like anything else?"*
67+
68+
## Try metrics
69+
70+
Helidon provides `MetricsChatModelListener` which generates metrics that follow the [Semantic Conventions for GenAI Metrics](https://opentelemetr.io/docs/specs/semconv/gen-ai/gen-ai-metrics). This is done out-of-box for Chat API calls. To view the captured metrics use following:
71+
72+
```shell
73+
# Prometheus Format
74+
curl -s -X GET http://localhost:8080/metrics
75+
...
76+
# HELP gen_ai_client_token_usage_token Measures number of input and output tokens used
77+
# TYPE gen_ai_client_token_usage_token histogram
78+
gen_ai_client_token_usage_token{gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="output",scope="vendor",quantile="0.5",} 71.0
79+
...
80+
gen_ai_client_token_usage_token{gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="input",scope="vendor",quantile="0.5",} 156.0
81+
...
82+
# HELP gen_ai_client_token_usage_token_max Measures number of input and output tokens used
83+
# TYPE gen_ai_client_token_usage_token_max gauge
84+
gen_ai_client_token_usage_token_max{gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="output",scope="vendor",} 71.0
85+
gen_ai_client_token_usage_token_max{gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="input",scope="vendor",} 156.0
86+
....
87+
# HELP gen_ai_client_operation_duration_seconds_max GenAI operation duration
88+
# TYPE gen_ai_client_operation_duration_seconds_max gauge
89+
gen_ai_client_operation_duration_seconds_max{error_type="",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",scope="vendor",} 2.0
90+
# HELP gen_ai_client_operation_duration_seconds GenAI operation duration
91+
# TYPE gen_ai_client_operation_duration_seconds histogram
92+
gen_ai_client_operation_duration_seconds{error_type="",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",scope="vendor",quantile="0.5",} 2.0
93+
...
94+
```

examples/integrations/langchain4j/coffee-shop-assistant-mp/pom.xml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,6 @@
4141
<mainClass>io.helidon.Main</mainClass>
4242
</properties>
4343

44-
<dependencyManagement>
45-
<dependencies>
46-
<dependency>
47-
<groupId>dev.langchain4j</groupId>
48-
<artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId>
49-
<version>${version.lib.langchain4j}</version>
50-
</dependency>
51-
</dependencies>
52-
</dependencyManagement>
53-
5444
<dependencies>
5545
<dependency>
5646
<groupId>io.helidon.integrations.langchain4j</groupId>

examples/integrations/langchain4j/coffee-shop-assistant-mp/src/main/resources/META-INF/microprofile-config.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ langchain4j.open-ai.chat-model.model-name=gpt-4o-mini
2525
langchain4j.rag.embedding-store-content-retriever.enabled=true
2626
langchain4j.rag.embedding-store-content-retriever.max-results=10
2727
langchain4j.rag.embedding-store-content-retriever.min-score=0.6
28-
langchain4j.rag.embedding-store-content-retriever.embedding-store=EmbeddingStore
28+
langchain4j.rag.embedding-store-content-retriever.embedding-store.service-registry.named=EmbeddingStore
2929

3030
app.menu-items=data/menu.json

examples/integrations/langchain4j/coffee-shop-assistant-se-coherence/src/main/java/io/helidon/examples/integrations/langchain4j/se/coffee/shop/assistant/ai/ChatAiService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* the service registry.
2828
*/
2929
@Ai.Service
30-
@Ai.ChatMemoryWindow(value=3,store="CoherenceChatMemoryStore")
30+
@Ai.ChatMemoryWindow(value=3,store="coherence")
3131
public interface ChatAiService {
3232

3333
/**

examples/integrations/langchain4j/coffee-shop-assistant-se/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,31 @@ Here are some example queries you can try:
6464
- **"Can I order a coffee and a cookie?"**
6565
- *Expected Response:*
6666
*"Your order for a coffee and a chocolate chip cookie has been saved. The total is $5.00. Would you like anything else?"*
67+
68+
## Try metrics
69+
70+
Helidon provides `MetricsChatModelListener` which generates metrics that follow the [Semantic Conventions for GenAI Metrics](https://opentelemetr.io/docs/specs/semconv/gen-ai/gen-ai-metrics). This is done out-of-box for Chat API calls. To view the captured metrics use following:
71+
72+
```shell
73+
# Prometheus Format
74+
curl -s -X GET http://localhost:8080/observe/metrics
75+
...
76+
# HELP gen_ai_client_token_usage_token Measures number of input and output tokens used
77+
# TYPE gen_ai_client_token_usage_token histogram
78+
gen_ai_client_token_usage_token{gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="output",scope="vendor",quantile="0.5",} 71.0
79+
...
80+
gen_ai_client_token_usage_token{gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="input",scope="vendor",quantile="0.5",} 156.0
81+
...
82+
# HELP gen_ai_client_token_usage_token_max Measures number of input and output tokens used
83+
# TYPE gen_ai_client_token_usage_token_max gauge
84+
gen_ai_client_token_usage_token_max{gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="output",scope="vendor",} 71.0
85+
gen_ai_client_token_usage_token_max{gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",gen_ai_token_type="input",scope="vendor",} 156.0
86+
....
87+
# HELP gen_ai_client_operation_duration_seconds_max GenAI operation duration
88+
# TYPE gen_ai_client_operation_duration_seconds_max gauge
89+
gen_ai_client_operation_duration_seconds_max{error_type="",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",scope="vendor",} 2.0
90+
# HELP gen_ai_client_operation_duration_seconds GenAI operation duration
91+
# TYPE gen_ai_client_operation_duration_seconds histogram
92+
gen_ai_client_operation_duration_seconds{error_type="",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4o-mini",gen_ai_response_model="gpt-4o-mini-2024-07-18",scope="vendor",quantile="0.5",} 2.0
93+
...
94+
```

examples/integrations/langchain4j/coffee-shop-assistant-se/pom.xml

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,6 @@
4141
<mainClass>io.helidon.examples.integrations.langchain4j.se.coffee.shop.assistant.ApplicationMain</mainClass>
4242
</properties>
4343

44-
<dependencyManagement>
45-
<dependencies>
46-
<dependency>
47-
<groupId>dev.langchain4j</groupId>
48-
<artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId>
49-
<version>${version.lib.langchain4j}</version>
50-
</dependency>
51-
</dependencies>
52-
</dependencyManagement>
53-
5444
<dependencies>
5545
<dependency>
5646
<groupId>io.helidon.integrations.langchain4j</groupId>
@@ -72,6 +62,15 @@
7262
<groupId>io.helidon.config</groupId>
7363
<artifactId>helidon-config-yaml</artifactId>
7464
</dependency>
65+
<dependency>
66+
<groupId>io.helidon.webserver.observe</groupId>
67+
<artifactId>helidon-webserver-observe-metrics</artifactId>
68+
</dependency>
69+
<dependency>
70+
<groupId>io.helidon.metrics</groupId>
71+
<artifactId>helidon-metrics-system-meters</artifactId>
72+
<scope>runtime</scope>
73+
</dependency>
7574
<dependency>
7675
<groupId>dev.langchain4j</groupId>
7776
<artifactId>langchain4j-embeddings-all-minilm-l6-v2-q</artifactId>

examples/integrations/langchain4j/coffee-shop-assistant-se/src/main/resources/application.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ langchain4j:
3030
enabled: true
3131
max-results: 10
3232
min-score: 0.6
33-
embedding-store: "EmbeddingStore"
33+
embedding-store:
34+
service-registry.named: "EmbeddingStore"
3435
app:
3536
menu-items: "data/menu.json"

0 commit comments

Comments
 (0)