API Ollama, похоже, игнорирует сообщения

Я настроил простой веб-интерфейс для связи с API Ollama и вывода ответов в окне чата. При запросе модели обычно так:

{
    "model": "llama3",
    "prompt": "Hello world"
}

Он возвращает стандартный поток ответов. Однако когда я делаю это вот так:

{
        "model": "llama3",
        "messages": [
            {
                "role": "user",
                "content": "why is the sky blue?"
            },
            {
                "role": "assistant",
                "content": "due to rayleigh scattering."
            },
            {
                "role": "user",
                "content": "how is that different than mie scattering?"
            }
        ]
    }

(Это всего лишь пример из документации )

Он возвращает сообщение, как будто это просто запрос «загрузки», который представляет собой пустую строку. При использовании cURL все работает отлично. Что мне здесь не хватает?

Это код, который я использую для запроса:

let url = "http://localhost:11434/api/generate";
    const data = {
        "model": "llama3",
        "messages": [
            {
                "role": "user",
                "content": "why is the sky blue?"
            },
            {
                "role": "assistant",
                "content": "due to rayleigh scattering."
            },
            {
                "role": "user",
                "content": "how is that different than mie scattering?"
            }
        ]
    };

    console.info(data);

    const requestOptions = {
        method: "POST",
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(data),
    };

    fetch(url, requestOptions)
        .then(res => res.body)
        .then(rb => {
            const reader = rb.getReader();
            
            return new ReadableStream({
                start(controller) {
                    function push() {
                        reader.read().then(async ({done, value}) => {
                            if (done) {
                                chatbox.innerHTML += "</p>";
                                console.info("done", done);
                                controller.close();
                                return;
                            }
                            // Fetch the individual words
                            await controller.enqueue(value);
                            let json = JSON.parse(new TextDecoder().decode(value));
                            chatbox.innerHTML += json.response;
                            push();
                        });
                    }
                    
                    push();
                }
            });
        })
        .then(stream => 
            new Response(stream, { headers: { "Content-Type": "text/html" } }).text()
        )
        .then(result => {
            console.info("Result:" + result);
        });
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

обязательно используйте /api/chat для подсказок в виде сообщений. Похоже, вы используете /api/generate в своем примере.

Другие вопросы по теме

Похожие вопросы

Откройте соединение TCP/IP через сокет с помощью принтера этикеток
Можно ли предварительно обработать дискриминатор в дискриминируемом объединении zod?
Лучшая практика асинхронного получения данных API из разных конечных точек с помощью React?
Где хранятся анонимные функции обратного вызова для setTimeout?
Добавить числа в объект в массиве JavasScript из индекса ниже значения и возвращаемого значения
Печать и предварительный просмотр веб-страницы не работают должным образом в браузере Microsoft Edge
Возврат значений на страницу Razor — запутанный Javascript или .cs?
Сборка npm run не удалась из-за несовместимости машинописного текста или lodash
TypeScript «Нет перегрузки, соответствующей этому вызову»
Способ определения точных свойств стиля, которые в данный момент применяются веб-анимацией (без смешивания со всеми применяемыми в данный момент стилями)