Skip to content

Commit 4164420

Browse files
authored
Support JDK8 runtime (#26)
1 parent a658b6a commit 4164420

64 files changed

Lines changed: 1888 additions & 730 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
trim_trailing_whitespace = true
8+
9+
[*.java]
10+
indent_style = space
11+
indent_size = 2
12+
13+
[*.xml]
14+
indent_style = space
15+
indent_size = 4

.github/workflows/maven.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@ jobs:
1919
distribution: 'temurin'
2020
cache: maven
2121

22+
- name: Check code format
23+
run: mvn -B spotless:check
24+
2225
- name: Build and test
2326
run: mvn -B verify -pl otel-util-genai -am

README.md

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,21 @@ implementation 'io.opentelemetry:opentelemetry-exporter-otlp'
8181
## Quick Start
8282

8383
```java
84-
var openTelemetry = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
85-
var handler = GenAiTelemetryHandler.create(openTelemetry);
86-
87-
try (var inv = handler.inference("openai", "gpt-4o")) {
88-
inv.setInputMessages(List.of(new InputMessage("user", List.of(new TextPart("Hello")))));
89-
var response = client.chat(request);
90-
inv.setOutputMessages(List.of(
91-
new OutputMessage("assistant", List.of(new TextPart(response.content())), "stop")));
84+
OpenTelemetry openTelemetry =
85+
AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
86+
GenAiTelemetryHandler handler = GenAiTelemetryHandler.create(openTelemetry);
87+
88+
try (InferenceInvocation inv = handler.inference("openai", "gpt-4o")) {
89+
inv.setInputMessages(
90+
Collections.singletonList(
91+
new InputMessage("user", Collections.singletonList(new TextPart("Hello")))));
92+
// Call your LLM client here, then record the response:
93+
inv.setOutputMessages(
94+
Collections.singletonList(
95+
new OutputMessage(
96+
"assistant",
97+
Collections.singletonList(new TextPart("Hi there!")),
98+
"stop")));
9299
}
93100
```
94101

@@ -103,7 +110,7 @@ See [docs/USAGE.md](docs/USAGE.md) for all operation types, streaming, error han
103110

104111
## Requirements
105112

106-
- Java 17+
113+
- Java 8+
107114
- OpenTelemetry API (use the latest `opentelemetry-bom` release)
108115

109116
## Community

README_zh.md

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,21 @@ implementation 'io.opentelemetry:opentelemetry-exporter-otlp'
8181
## 快速开始
8282

8383
```java
84-
var openTelemetry = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
85-
var handler = GenAiTelemetryHandler.create(openTelemetry);
86-
87-
try (var inv = handler.inference("openai", "gpt-4o")) {
88-
inv.setInputMessages(List.of(new InputMessage("user", List.of(new TextPart("你好")))));
89-
var response = client.chat(request);
90-
inv.setOutputMessages(List.of(
91-
new OutputMessage("assistant", List.of(new TextPart(response.content())), "stop")));
84+
OpenTelemetry openTelemetry =
85+
AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
86+
GenAiTelemetryHandler handler = GenAiTelemetryHandler.create(openTelemetry);
87+
88+
try (InferenceInvocation inv = handler.inference("openai", "gpt-4o")) {
89+
inv.setInputMessages(
90+
Collections.singletonList(
91+
new InputMessage("user", Collections.singletonList(new TextPart("你好")))));
92+
// 调用你的 LLM 客户端后,记录响应:
93+
inv.setOutputMessages(
94+
Collections.singletonList(
95+
new OutputMessage(
96+
"assistant",
97+
Collections.singletonList(new TextPart("你好!")),
98+
"stop")));
9299
}
93100
```
94101

@@ -103,7 +110,7 @@ try (var inv = handler.inference("openai", "gpt-4o")) {
103110

104111
## 要求
105112

106-
- Java 17+
113+
- Java 8+
107114
- OpenTelemetry API(使用最新的 `opentelemetry-bom` 发布版本)
108115

109116
## 社区

examples/pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
<spring-boot.version>3.5.3</spring-boot.version>
2121
<openai-java.version>4.26.0</openai-java.version>
2222
<loongsuite.publish.skip>true</loongsuite.publish.skip>
23+
<maven.compiler.source>17</maven.compiler.source>
24+
<maven.compiler.target>17</maven.compiler.target>
2325
</properties>
2426

2527
<dependencyManagement>

examples/src/main/java/com/alibaba/loongsuite/otel/util/genai/example/AgentService.java

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
import com.alibaba.loongsuite.otel.util.genai.types.InputMessage;
2222
import com.alibaba.loongsuite.otel.util.genai.types.OutputMessage;
2323
import com.alibaba.loongsuite.otel.util.genai.types.TextPart;
24-
import java.util.List;
24+
25+
import java.util.Collections;
26+
2527
import org.springframework.beans.factory.annotation.Value;
2628
import org.springframework.stereotype.Service;
2729

@@ -49,24 +51,55 @@ public AgentResponse invokeAgent(String agentName, String task) {
4951
inv.setAgentId("agent-" + agentName);
5052
inv.setAgentDescription("Example agent: " + agentName);
5153
inv.setInputMessages(
52-
List.of(new InputMessage("user", List.of(new TextPart(task)))));
54+
Collections.singletonList(
55+
new InputMessage("user", Collections.singletonList(new TextPart(task)))));
5356

5457
ChatService.ChatResponse llmResponse = chatService.chat(task);
5558

5659
inv.setOutputMessages(
57-
List.of(
60+
Collections.singletonList(
5861
new OutputMessage(
5962
"assistant",
60-
List.of(new TextPart(llmResponse.content())),
63+
Collections.singletonList(new TextPart(llmResponse.getContent())),
6164
"stop")));
62-
inv.setInputTokens(llmResponse.inputTokens());
63-
inv.setOutputTokens(llmResponse.outputTokens());
65+
inv.setInputTokens(llmResponse.getInputTokens());
66+
inv.setOutputTokens(llmResponse.getOutputTokens());
6467

65-
return new AgentResponse(agentName, llmResponse.content(),
66-
llmResponse.inputTokens(), llmResponse.outputTokens());
68+
return new AgentResponse(
69+
agentName,
70+
llmResponse.getContent(),
71+
llmResponse.getInputTokens(),
72+
llmResponse.getOutputTokens());
6773
}
6874
}
6975

70-
public record AgentResponse(
71-
String agentName, String content, long inputTokens, long outputTokens) {}
76+
public static class AgentResponse {
77+
private final String agentName;
78+
private final String content;
79+
private final long inputTokens;
80+
private final long outputTokens;
81+
82+
public AgentResponse(String agentName, String content, long inputTokens, long outputTokens) {
83+
this.agentName = agentName;
84+
this.content = content;
85+
this.inputTokens = inputTokens;
86+
this.outputTokens = outputTokens;
87+
}
88+
89+
public String getAgentName() {
90+
return agentName;
91+
}
92+
93+
public String getContent() {
94+
return content;
95+
}
96+
97+
public long getInputTokens() {
98+
return inputTokens;
99+
}
100+
101+
public long getOutputTokens() {
102+
return outputTokens;
103+
}
104+
}
72105
}

0 commit comments

Comments
 (0)