Ollama API无法看到对话历史中提供的消息,

w80xi6nr  于 2个月前  发布在  其他
关注(0)|答案(3)|浏览(19)

问题是什么?

当我将一个字典列表(消息)传递给ollama.chat时,似乎模型除了最新的一条消息之外什么都看不到。例如,我希望模型获取一堆文本,然后回答关于它的一个问题。我发送的内容如下:

role: system content: You are a helpful assistant
role: user content: a bunch of reference text
role: user content: a question related to the reference text

然后我得到的回复是:

role: assistant content: an answer unrelated to the reference text, as if it doesn't see it

这是个bug吗,还是我做错了什么?

操作系统

Windows

GPU

Nvidia

CPU

  • 无响应*

Ollama版本

0.2.7

hujrc8aj

hujrc8aj1#

你能提供一个例子吗?这里看起来是有效的:

$ curl -s localhost:11434/api/chat -d '{
"model": "qwen2:0.5b",
"messages": [
{
"role": "user",
"content": "an apple is $1.50"
},
{
"role": "user",
"content": "how much is an apple?"
}
],
"stream": false
}' | jq .message
{
  "role": "assistant",
  "content": "An apple costs $1.50."
}
kmb7vmvb

kmb7vmvb2#

非常感谢,这可能给了我需要的提示。我在第一个用户消息中提供的文本有45000个标记,我认为Phi3 128k应该没问题。Ollama是否因为太长而丢弃了它?当我将文本缩短到大约4k个标记时,我的示例和我的例子一样有效。如果用户消息长度有限制,我可以拆分我的文本吗?

ehxuflar

ehxuflar3#

Ollama的默认上下文长度为2048,因此很可能开始的文本被丢弃了(请检查服务器日志中的"input truncated")。您可以在API调用中传递一个选项来增加窗口:

$ curl -s localhost:11434/api/chat -d '{
  "model": "qwen2:0.5b",
  "messages": [
    {
      "role": "user",
      "content": "an apple is $1.50"
    },
    {
      "role": "user",
      "content": "how much is an apple?"
    }
  ],
  "options": { "num_ctx": 45000 },
  "stream": false
}' | jq .message

请注意,这可能会显著增加模型的VRAM/RAM要求,内存使用量与上下文窗口的长度成正比。

相关问题