-
Notifications
You must be signed in to change notification settings - Fork 1
/
ComputeAvgScoreFunction.java
64 lines (55 loc) · 2.29 KB
/
ComputeAvgScoreFunction.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package io.github.oldmanpushcart.test.qianfan4j.chat.function;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import io.github.oldmanpushcart.qianfan4j.chat.function.ChatFn;
import io.github.oldmanpushcart.qianfan4j.chat.function.ChatFunction;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Stream;
@ChatFn(name = "compute_avg_score", description = "计算平均成绩", examples = {
@ChatFn.Example(
question = """
张三的语文30分、数学20分、英语100分;
李四的语文50分、数学90分、英语60分;
计算张三的平均成绩
""",
thoughts = "我应该将张三的所有分数传入,计算张三的平均分",
arguments = """
{
"scores": [
30,
20,
100
]
}
"""
),
@ChatFn.Example(
question = "张三的数学成绩是50分、语文30分、英语20分;李四的数学成绩是60分、语文90分;请计算他们的语文平均成绩",
thoughts = "我应该把所有人的语文分数传入,从而计算出语文的平均成绩",
arguments = """
{
"scores": [
30,
90
]
}
"""
)
})
public class ComputeAvgScoreFunction implements ChatFunction<ComputeAvgScoreFunction.Request, ComputeAvgScoreFunction.Response> {
@Override
public CompletableFuture<Response> call(Request request) {
return CompletableFuture.completedFuture(new Response(
(float) Stream.of(request.scores()).mapToDouble(Float::doubleValue).average().orElse(0)
));
}
public record Request(
@JsonPropertyDescription("分数集合")
Float[] scores
) {
}
public record Response(
@JsonPropertyDescription("平均分")
Float avgScore
) {
}
}