ragflow [问题]:为什么max_token同时用于输入和输出?

cvxl0en2  于 3个月前  发布在  其他
关注(0)|答案(1)|浏览(48)

描述你的问题

我正在查看 api/db/services/dialog_service 中的 chat() 函数的代码。我注意到 max_tokens 被用来限制输入大小到 LLM,检查是在 message_fit_in 中完成的。但是下面的代码紧接着 message_fit_in:

if "max_tokens" in gen_conf:
gen_conf["max_tokens"] = min(
gen_conf["max_tokens"],
max_tokens - used_token_count)

然后这个 gen_conf["max_tokens"] 后面又被用在了 rag/llm/chat_model.py 中,在 chat() 函数的 OllamaChat 类里:

if "max_tokens" in gen_conf: options["num_predict"] = gen_conf["max_tokens"]

这意味着现在 max_tokens 是用来限制输出大小的。如果真是这样,为什么还要从 max_tokens 中提取输入消息(由 used_token_count 表示)的长度呢?

感谢你的帮助!

flseospp

flseospp1#

在Ollama中,max_tokens的定义确实与其他地方不同。顺便说一下,你可以开始这个项目来跟进。谢谢!

相关问题