Оллама ничего не сохраняет в контексте

Я возился с ollama в кодировании на C#, и мне удалось заставить его выдавать мне выходные данные и даже взаимодействовать с моим кодом, однако, используя предоставленный ими пример, я столкнулся с проблемой, когда LLM не сохраняет предыдущие разговоры. , и в итоге я применил небрежный метод добавления инструкций вместе с подсказками.

Вот мой код:

public async void Prompt(string prompt)
{
    output = "";
    string input = instructions + prompt;
    context = await ollama.StreamCompletion(input, context, stream => output += (stream.Response));
    Console.WriteLine(output);
}

Вывод представляет собой строку, я мог бы изменить ее на что-то, что позволит позже сохранить больше переменных.

Контекст — это переменная ConversationContext.

Идея состоит в том, чтобы дать ему подсказку, по которой он должен следить за всем разговором, однако в настоящее время это необходимо ввести с помощью инструкций, добавляемых перед моим приглашением. Это не идеально, поскольку это противоречит цели получения степени LLM.

Что я хочу сделать, это: Вводить инструкцию только при запуске. Звонок подсказывает как обычно. Пусть он выполняет инструкции, когда это необходимо.

Я попробовал контекст += Но это недопустимый метод. Я искал решение этой проблемы, но нашел только еще один вопрос по этому поводу, и это было в феврале.

Есть ли причина, по которой вы используете async void вместо async Task? async void по сути означает «Запустить и забыть», с добавленным сюрпризом: если метод выдает исключение, это, вероятно, приведет к сбою вашего приложения.

Conway 03.08.2024 07:05

@Конвей, ты гений! Честно говоря, я привык программировать в Unity, где чаще используется void, и даже не знал, что Task можно использовать. Спасибо, чувак, очень ценю!

Heinrich Espach 03.08.2024 16:33
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Благодаря Конвею я смог исправить свой код. В связи с тем, что я привык программировать в Unity, я всегда использовал Void вместо Task, потому что не знал об этом, поэтому, чтобы исправить то, что у меня было, я сделал:

`
public async Task Prompt(string prompt)
{
    output = "";
    string input = prompt;
    context = await ollama.StreamCompletion(input, context, stream => output += (stream.Response));
    Console.WriteLine(output);
    ConsoleCommands.aIResponse = true;
    ConsoleCommands.checkCommand(output);
}
`

Благодаря этому у меня теперь есть интегрированная программа с искусственным интеллектом, которая запоминает предыдущие подсказки и разговоры.

Я надеюсь, что это поможет кому-то еще в будущем!

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

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

Blazor EditForm: кнопка отключения приводит к тому, что все нетронутые поля помечаются как недействительные
Почему я не могу использовать DLL .NET 8 из моего приложения .NET Framework 4.7.2 Windows Forms?
.NET 8: MemoryCache SlidingExpiration без доступа
Не удалось загрузить файл или сборку «System.Diagnostics.DiagnosticSource», версия = 6.0.0.0. Система не может найти указанный файл
Зачем использовать структуру для хранения констант, а не статический класс?
Невозможно получить доступ к наблюдаемому свойству в модели представления из соответствующего файла .xaml представления — .NET MAUI MVVM
Устойчивые функции Azure не вызываются при использовании с триггером Q с использованием управляемого удостоверения
Как я могу преобразовать этот SQL-запрос в linq, когда у меня есть подзапрос, группировка и предложение?
Проблема развертывания Blazor WASM Core в Azure
Преобразование оператора foreach в оператор выбора