Главная / Статьи / Та же самая петля чата в Ollama без облачных ключей

Та же самая петля чата в Ollama без облачных ключей

Запустите путь обработки сообщений в стиле OpenAI на локальной модели, чтобы учебные материалы оставались пригодными для использования в режиме офлайн.

852 слов

Используйте это как переработку идей из раздела «Часть 5 — Запуск той же циклической задачи в Ollama (без API-ключа, диалект OpenAI)» для операторов: четкие этапы, упорядоченные блоки кода и записи о восстановлении, сохраняющиеся при передаче задачи. Обзор работает лучше всего, когда его рассматривают как измеримую основу. Сначала зафиксируйте один идеальный пример выполнения, один случай сбоя и записи о возврате к предыдущему состоянию, прежде чем расширять объем работы. Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Дайте названия результатам работы, определите критерии успеха и не допускайте молчаливого частичного выполнения задачи.

from openai import OpenAI

# Part 2's SDK, different address
client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama",  # required, unused
)

resp = client.chat.completions.create(
    model="llama3.2",
    messages=[
        {
            "role": "system",
            "content": "You are a concise "
                       "assistant.",
        },
        {
            "role": "user",
            "content": "Where are you running "
                       "right now?",
        },
    ],
    temperature=0,
)
print(resp.choices[0].message.content)
msgs = [{
    "role": "system",
    "content": "You are a concise assistant.",
}]

def ask(text: str) -> str:
    msgs.append(
        {"role": "user", "content": text}
    )
    resp = client.chat.completions.create(
        model="llama3.2",
        messages=msgs,  # full history
        temperature=0,
    )
    reply = resp.choices[0].message.content
    msgs.append({
        "role": "assistant",
        "content": reply,
    })
    return reply

print(ask("Define a context window."))
print(ask("Now for a five-year-old."))
print(ask("Which answer was shorter?"))
# one-time: install from ollama.com, then
ollama pull llama3.2

pip install -r requirements.txt
python examples/part05_ollama.py

Чек-лист операций

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

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

Записывайте идентификатор запроса, идентификатор модели и время задержки при каждом вызове. Без такой отслеживаемости периодические ошибки поставщика кажутся багами приложения.

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

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

Записывайте идентификатор запроса, идентификатор модели и время задержки при каждом вызове. Без такой отслеживаемости периодические ошибки поставщика кажутся багами приложения.

Перед внедрением стека заморозьте версии, сделайте копию «золотого» отчета для критической цепочки операций и уточните шаги возврата к предыдущему состоянию. В совместных средах необходимы ограничения на частоту запросов, проверки принадлежности пользователя и четко определенный ответственный за обновление секретов. Лучше выбирать надежность, даже если она кажется скучной, чем умные одноразовые демонстрации.

Примечание для задачи 25763587d271: не храните ключи поставщика в репозитории, установите лимит токенов на одну сессию и сохраняйте отчеты рядом с фикстчерами для оценки, чтобы последующие замены моделей можно было сравнивать.

По поводу усиления безопасности в пункте 0 необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Лучше использовать небольшие, проверяемые на функциональность модули вместо обширных скриптов. При сбое шага причина должна быть связана с конкретной функцией, а не с запутанной цепочкой операций.

Подробности усиления безопасности 0/681: измерьте время выполнения, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранить изменение на основе фиксированного набора вопросов, а не на основе единичных примеров.

При работе над записью об усилении безопасности №1 сначала запишите контракт: необходимые входные данные, сигнал успешного выполнения и что происходит при частичной неудаче. Такой чек-лист помогает сохранять честность при последующих изменениях кода. Записывайте временные показатели и стоимость токенов или запросов рядом с функциональными результатами. Очевидность затрат с самого начала предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды.

Подробности усиления безопасности 1/681: измерьте время выполнения, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранить изменение на основе фиксированного набора вопросов, а не на основе единичных примеров.

Замечание по укреплению 2 будет наиболее эффективным, если рассматривать его как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объёма работ. Документируйте одновременно успешный и восстановительный пути. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не последующими доработками.

Подробность укрепления 2/681: измеряйте время выполнения, класс ошибки и расход токенов для этого замечания, а затем принимайте решение о сохранении изменений на основе фиксированного набора вопросов, а не на основе устных описаний.

Для замечания по укреплению 3 определите входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия элементам документации, определите критерии успеха и не соглашайтесь на молчаливое частичное завершение работы.

Подробности усиления безопасности 3/681: измерьте время обработки запроса, класс ошибки и количество использованных токенов для этой записи, затем решите, следует ли сохранять изменения на основе фиксированного набора критериев, а не единичных примеров.