interface SentimentAnalyzer {
@UserMessage("Analyze sentiment of:\n|||{{it}}|||")
@Examples(
@Example(user = "This is fantastic news!", ai = "POSITIVE"),
@Example(user = "Pi is roughly equal to 3.14", ai = "NEUTRAL"),
@Example(user = "I really disliked the pizza.", ai = "NEGATIVE")
)
Sentiment analyzeSentimentOf(String text);
// or
@Example(user = "This is fantastic news!", ai = "POSITIVE")
@Example(user = "Pi is roughly equal to 3.14", ai = "NEUTRAL")
@Example(user = "I really disliked the pizza.", ai = "NEGATIVE")
@UserMessage("Analyze sentiment of:\n|||{{it}}|||")
Sentiment analyzeSentimentOf(String text);
}
编程式:
AiServices.builder(SentimentAnalyzer.class)
.chatLanguageModel(chatLanguageModel)
.examplesProvider((userMessage) -> // one could dynamically select examples depending on the (current) user message
List.of(UserMessage.from(...), AiMessage.from(...), ...)
)
.build();
2条答案
按热度按时间wwtsj6pe1#
我在article中实现了不同的方法来进行少量样本的提示。使用经典的大型字符串提示模板,以及用户/ AI消息列表,然后还有
AiServices
。我还没有调查工具调用方面。但我希望看到类似于TextClassification
类的东西,但用于少量样本的提示。那可能会很有趣。ctzwtxfj2#
可能的选择有限:
声明式:
编程式:
我们还需要考虑如何提供带有工具使用说明的示例,例如在这个例子中应该有4条消息:
用户 - AI - 工具 - AI。
另外一件事:是否支持在
@Example
中使用模板?另外一件事:如何指定带有结构化输出的示例(例如 POJO):作为原始 JSON 字符串还是作为 POJO 对象?