描述bug
在使用 AIServices
与 LocalAI 时,出现了一个 bug。
日志和堆栈跟踪
我目前没有堆栈跟踪,但问题出现在以下几行代码中:
langchain4j/langchain4j/src/main/java/dev/langchain4j/service/DefaultAiServices.java
第 166 行的 6c49573
| | tokenUsageAccumulator = tokenUsageAccumulator.add(response.tokenUsage()); |
langchain4j/langchain4j/src/main/java/dev/langchain4j/service/AiServiceStreamingResponseHandler.java
第 85 行的 6c49573
| | tokenUsage.add(response.tokenUsage()) |
langchain4j/langchain4j/src/main/java/dev/langchain4j/service/AiServiceStreamingResponseHandler.java
第 92 行的 6c49573
| | tokenUsage.add(response.tokenUsage()), |
重现方法
使用 AIServices
与 LocalAI 模型进行聊天。
预期行为
从 AIServices
助手获得聊天回复。
请填写以下信息:
- LangChain4j 版本:0.27.1
- Java 版本:17
- Spring Boot 版本(如适用):3.2.2(未使用 langchain4j starter)
附加上下文
似乎在使用 LocalAI 时,Response.tokenUsage
一直等于 null
。
langchain4j/langchain4j-local-ai/src/main/java/dev/langchain4j/model/localai/LocalAiChatModel.java
第 105 行的 6c49573
| | returnResponse.from( |
langchain4j/langchain4j-open-ai/src/main/java/dev/langchain4j/model/openai/OpenAiStreamingResponseBuilder.java
第 175 行的 6c49573
| | privateTokenUsagetokenUsage(Stringcontent, Tokenizertokenizer) { |
我已经通过提供自定义的 LocalAiChatModelBuilderFactory
并忽略 null
来自 Response.tokenUsage
解决了这个问题,但这可能不是最好的解决方案。
我注意到 LocalAI 的 JSON 回复中确实包含了令牌使用情况(设置为0),目前被 Langchain4J 忽略,而 Response.tokenUsage
只是设置为 null
。
LocaLAI 可能在未来添加一些配额,因此从响应中提取令牌使用情况可能是一个更好的解决方案?
1条答案
按热度按时间egdjgwm81#
感谢quachc的报告!