labring / FastGPT

FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop and deploy complex question-answering systems without the need for extensive setup or configuration.
https://tryfastgpt.ai
Other
17.45k stars 4.69k forks source link

长文本输入后,最大响应 tokens自动默认为200,导致回复被截断 #2942

Closed SDAIer closed 3 days ago

SDAIer commented 3 days ago

4.8.11-fix

AI+文档解析,AI配置中设置回复上限1950。 image

问题1、如果输入的文件内容较少,AI回复正常。

通过以下oneapi log发现,promptTokens=5122, completionTokens=421,AI正常完成回复信息。

[INFO] 2024/10/16 - 13:16:34 | 202410161316242480038804280722 | record consume log: userId=1, channelId=23, promptTokens=5122, completionTokens=421, modelName=glm4:9b, tokenName=Initial Root Token, quota=166290, content=模型倍率 30.00,分组倍率 1.00,补全倍率 1.00

image

问题2、如果输入的文件内容较多,AI只回复200tokens (更换了本地模型和阿里在线模型问题一样,oneapi completionTokens以及AI查看详情--最大响应 tokens都是200)

通过以下oneapi log发现,promptTokens=52919, completionTokens=200(每次都是200),AI不能完整回复。

[INFO] 2024/10/16 - 13:10:18 | 2024101613080342515017285425314 | record consume log: userId=1, channelId=23, promptTokens=52919, completionTokens=200, modelName=glm4:9b, tokenName=Initial Root Token, quota=1593570, content=模型倍率 30.00,分组倍率 1.00,补全倍率 1.00

image

c121914yu commented 3 days ago

那不就意味着,你得换一个更大点模型了么?已经 oversize 了~ 你应该先了解下 LLM 基础参数的设定,再去调试,不然都不知道这些参数是怎么取值的。 比如 context 和 max_tokens 的关系,不是你设置可 max_tokens=1000 就是 1000,如果你 max_context - prompt_context < 1000,那你就肯定不能取到 max_tokens=1000 了。

SDAIer commented 3 days ago

多谢回复。模型的大小没有问题。 我用本地模型可以支持128k上下文,而我输入的只有59k上下文。 另外,我也用了阿里在线qwen72b模型,上下文不到6k,也是同样的问题,最大响应 tokens:自动变为200 image

c121914yu commented 3 days ago
image

那就是你自个配置有问题了,128k 模型不配 128k 上下文。

SDAIer commented 3 days ago

我发现问题了,config.json中maxContext配置的有点小导致的。

另外,请教下,我上面描述中, oneapi log:completionTokens=200 以及AI-查看详情--最大响应tokens200 这个200是怎么来的?是模型返回的吗?还是fastgpt通过模型识别oversize 后自动设置为200?