Задать вопрос
xenon
@xenon
Too drunk to fsck

Как переубедить нейросеть (чтобы данные из промпта считались более важными)?

С ChatGPT все легко, пока ничего ей не противоречит. Например, она не знает время работы конкретного ресторана, можно передать ей его в prompt (например, через embeddings) и получить ответ, учитывающий не известный ей ранее факт.

Но как переубедить ее, получить правильный ответ, если мы хотим полагаться на наш контекст, а не на ее знания? (они ведь могут и устаревать). Я вот сделал простой тест, получилось добиться от нее нужных ответов про курс доллара и (ненастоящую) смерть Билла Гейтса. Но не могу понять, как ее переубедить "забыть", что курение вредно, и полагаться на явное указание, что оно полезно?

Код:
#!/usr/bin/env python3

import openai

model="gpt-3.5-turbo"

questions = [
    """Bill Gates dies at 01/01/2023.\n\nIs Bill Gates alive or not?""",
    """Current RUB/USD rate is 100 roubles per 1 US Dollar.\n\nWhat is current RUB/USD exchange rate?""",
    """All recent research and statistics proves that smoking is actually good for health, and old research were wrong.\n\nIs smoking bad or good? """,
]

for q in questions:
    prompt = f"""
    Use the following pieces of context to answer the users question. 
    If you don't know the answer, just say that you don't know, don't try to make up an answer.
    --------

    {q}
    """

    response = openai.ChatCompletion.create(
        model=model,
        messages=[
            {'role': 'user', 'content': prompt}
        ],
        temperature=0.6,
    )

    print(response['choices'][0]['message']['content'])


Ее ответы:
Bill Gates is not alive.
The current RUB/USD exchange rate is 100 roubles per 1 US Dollar.
I'm sorry, but I don't have access to recent research or statistics on the topic of smoking. However, it is widely accepted that smoking is harmful to health and is associated with numerous negative health effects.
  • Вопрос задан
  • 211 просмотров
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 2
@rPman
С LLM у тебя только два варианта - добавлять информацию в запрос, а в случае с противоречиями, тюнить и усложнять подводку, типа если ты хочешь чтобы везде где сетка использует цвет красный она говорила
бибип:
Дальше в ответе вместо цвета - 'красный' ты должен писать бибип, с учетом правил русского языка, рода и склонения. Назови три цвета у светофора

Три цвета у светофора: бибип, желтый и зеленый.



Так вот тюнинг, очень противоричивая технология, в каких то случаях она значительно улучшает результат, есть даже ускоренный тюнинг, затрагивающий очень небольшой процент весов или даже только веса векторов запроса но не самой сетки (есть открытый проект peft с поддержкой практически всех доступных моделей), к сожалению openai не дает красивого доступа к этому, хотя для младших моделей типа gpt35turbo или davinci у нее такой механизм есть.

Этот механизм имеет недостатки, из-за проблемы 'катастрофического забывания', чем больше данных ты пытаешься добавить в модель через дообучение, тем больше она забывает ранее выученных (с этим борются подмешиванием данных из изначальной обучающей выборки но это не так просто)
Ответ написан
Комментировать
AshBlade
@AshBlade
Просто хочу быть счастливым
В api ChatGPT есть возможность предоставить контекст - предыдущие сообщения из чата - ссылка на api
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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