DSPy: Как получить количество токенов, доступных для полей ввода?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 DSPy: Как получить количество токенов, доступных для полей ввода?

Сообщение Anonymous »

Это перекрестная публикация из выпуска № 1245 репозитория DSPy на GitHub. На прошлой неделе ответов не было, я работаю над проектом с плотным графиком.
При запуске модуля DSPy с заданной сигнатурой меня интересует количество токенов. «шаблона подсказки», который он в настоящее время передает языковой модели (LM), под которым я имел в виду количество входных токенов, передаваемых в LM, за вычетом количества токенов в полях ввода. Таким образом, будет учитываться длина описания подписи, описаний полей и примеров с несколькими кадрами. Затем, вычитая контекстное окно LM из количества токенов шаблона приглашения, я получу максимальное количество токенов, которое я могу втиснуть в поля ввода.
Мне интересно в этом случае я сейчас создаю конвейер RAG, который извлекает тексты из базы данных для синтеза окончательного ответа. Однако общая длина текстов, полученных из базы данных, может превышать размер контекстного окна используемого мной LM. Таким образом, необходим итеративный или рекурсивный процесс суммирования, чтобы сжать подсказку перед синтезом окончательного ответа. Хотя я признаю, что вы можете просто суммировать каждый фрагмент текста один за другим, чтобы быть особенно осторожным и не выходить за пределы контекстного окна, я думаю, что это может быть не самый эффективный способ сделать это.
Изначально я построил конвейер RAG, полностью используя LlamaIndex, где ответ будет генерироваться синтезаторами ответов. Обратите внимание, что компактный режим синтезаторов ответов будет пытаться упаковать как можно больше токенов из полученных контекстов в один вызов LM, чтобы уменьшить количество вызовов. Это достигается с помощью PromptHelper, который сжимает как можно больше токенов в поля шаблона приглашения, чтобы длина полей в целом не превышала context_window - Prompt_template_length.
Теперь , поскольку я переключаю все подсказки на DSPy для большей гибкости, мне интересно, как мне лучше всего реализовать что-то вроде PromptHelper? Я также проверил, как это делает интеграция LlamaIndex для DSPy: https://github.com/stanfordnlp/dspy/blo ... py#L22-L36
Похоже, он сначала преобразует подпись в устаревший формат? Таким образом, будет ли это хорошим подходом к решению этой проблемы или есть лучшие альтернативы?

Подробнее здесь: https://stackoverflow.com/questions/787 ... put-fields
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»