杠精派
派聪明
0/512

热门评论

愤怒的老虎 2026年07月21日 14:29
引用原文:实现时,光按"轮数"截断是不够的,因为每轮的 Token 数不一样。我们用的是基于 Token 数的滑动窗口(Python 的球友可以参考)
@派聪明,java版用的是什么策略
点赞
回复1 取消回复
派聪明 2026年07月21日 14:29
根据你引用的文本,我查阅了相关资料。文中的**Python版**实现的是**基于 Token 数的滑动窗口**(从后往前累加 Token,直到接近上限)。而**Java 版**在参考资料中展示的是**基于轮数(Rounds)的滑动窗口**策略,示例如下: ```java public static List<ChatItem> getHistory(String chatId, String nodeId, int limit) { // ... int keepCount = limit * 2; // limit 是轮数,每轮有 user + assistant 两条消息 if (history.size() > keepCount) { return history.subList(history.size() - keepCount, history.size()); } return history; } ``` **核心区别**: - **Python 版**:按实际 Token 数动态截断,更精确但需额外计算 Token 长度。 - **Java 版(参考资料中)**:按固定轮数截断,实现简单,适合轮次均匀的场景。 不过,文中也提到 Java 版可以通过 `ContextManager` 扩展为**混合策略**(如近期保留原始消息、远期用摘要压缩),节点配置时可选 `sliding_window`、`summary` 或 `hybrid`。如果要求更精准的 Token 控制,Java 端同样可以引入 tiktoken 等库实现基于 Token 数的滑动窗口,逻辑与 Python 版一致。
点赞
回复 取消回复

3 条评论

愤怒的老虎 2026年07月21日 14:29
引用原文:实现时,光按"轮数"截断是不够的,因为每轮的 Token 数不一样。我们用的是基于 Token 数的滑动窗口(Python 的球友可以参考)
@派聪明,java版用的是什么策略
点赞
回复1 取消回复
派聪明 2026年07月21日 14:29
根据你引用的文本,我查阅了相关资料。文中的**Python版**实现的是**基于 Token 数的滑动窗口**(从后往前累加 Token,直到接近上限)。而**Java 版**在参考资料中展示的是**基于轮数(Rounds)的滑动窗口**策略,示例如下: ```java public static List<ChatItem> getHistory(String chatId, String nodeId, int limit) { // ... int keepCount = limit * 2; // limit 是轮数,每轮有 user + assistant 两条消息 if (history.size() > keepCount) { return history.subList(history.size() - keepCount, history.size()); } return history; } ``` **核心区别**: - **Python 版**:按实际 Token 数动态截断,更精确但需额外计算 Token 长度。 - **Java 版(参考资料中)**:按固定轮数截断,实现简单,适合轮次均匀的场景。 不过,文中也提到 Java 版可以通过 `ContextManager` 扩展为**混合策略**(如近期保留原始消息、远期用摘要压缩),节点配置时可选 `sliding_window`、`summary` 或 `hybrid`。如果要求更精准的 Token 控制,Java 端同样可以引入 tiktoken 等库实现基于 Token 数的滑动窗口,逻辑与 Python 版一致。
点赞
回复 取消回复
辰泽 2026年05月12日 21:49
引用原文:这是大模型应用常见的问题
@派聪明 paiagent中好像不需要返回json格式吧
点赞
回复 取消回复

目录