Основная поисковая система ИИ с открытым исходным кодом, смоделированная после недоумения.ai. Если вы не знакомы с платформой для вопросов, работающей на основе AI, они используют большую языковую модель, такую как CHATGPT, чтобы ответить на ваши вопросы, но улучшает CHATGPT тем, что она привлекла точные и результаты поиска в реальном времени, чтобы дополнить ответ (так что нет «отсечения знаний»). И перечисляет цитаты внутри самого ответа, который укрепляет уверенность, что он не галлюцинирует, и позволяет вам исследовать темы дальше.
search.php (ищите "[заполните меня]")Основная задача с LLM, такими как CHATGPT, заключается в том, что у них есть отсечение знаний (и они иногда имеют тенденцию к галлюцинации). Это потому, что они обучены данным до определенной даты (например, сентябрь 2021). Поэтому, если вам нужен ответ на актуальный вопрос или вы просто хотите подробно исследовать тему, вам необходимо увеличить ответ с помощью соответствующих источников. Эта техника известна как тряпка (поиск дополненного поколения). И в нашем случае мы можем просто предоставить LLM актуальную информацию от поисковых систем, таких как Google или Bing.
Чтобы построить это самостоятельно, вы захотите сначала подписаться на ключ API от Bing, Google (через Serper), Brave или других. Bing, Brave и Serper предлагают бесплатное использование для начала работы.
В search.php поместите свой ключ API там, где это необходимо (ищите «[заполните меня]»). Для этого примера у меня есть код как для смелых, так и для Google через Serper.
Здесь вам нужно будет подписаться на ключ API от поставщика LLM. Сейчас есть много поставщиков на выбор. Например, есть Openai, Anpropic, Antscale, Groq, Cloudflare, недоумение, лептон или крупные игроки, такие как AWS, Azure или Google Cloud. Я использовал многие из них с успехом, и они предлагают подмножество современных и популярных моделей с закрытым и открытым исходным кодом. И каждая модель имеет уникальные силы, разные затраты и разные скорости. Например, GPT-4 очень точен, но дорогой и медленный. Когда вы сомневаемся, я бы порекомендовал использовать CHATGPT-3.5-Turbo от OpenAI. Это достаточно хорошо, достаточно дешево и достаточно быстро, чтобы проверить это.
К счастью, большинство из этих поставщиков услуг LLM совместимы с форматом API OpenAI, поэтому переход на другой поставщик / модель - это лишь минимальная работа (или просто попросить чат -бот написать код!).
В search.php поместите свои клавиши API, где это необходимо (ищите «[заполните меня]»). Для этого примера я использую OpenAI (для ChatGPT-3.5-Turbo / GPT-4) и GROQ (для Mixtral-8B7B). Поэтому, чтобы сохранить свою работу минимальной, просто возьмите ключи для одного или обоих из них.
Когда вы хотите задать LLM вопрос, вы можете предоставить много дополнительного контекста. Каждая модель имеет свой уникальный предел, и некоторые из них очень велики. Для GPT-4-Turbo вы можете пройти всю первую книгу Гарри Поттера с вашим вопросом. Супер мощный Gemini 1.5 Google может поддерживать размер контекста более миллиона токенов. Этого достаточно, чтобы пройти всю серию из 7 книг Гарри Поттера!
К счастью, передача фрагментов 8-10 результатов поиска намного меньше, что позволяет вам использовать многие из более быстрых (и гораздо более дешевых) моделей, таких как GPT-3.5-Turbo или Mistral-7B.
По моему опыту, передача вопроса пользователя, пользовательское сообщение об быстроте и фрагменты результатов поиска обычно составляют токены в 1K. Это вполне находится в рамках даже самых основных ограничений модели, так что это не должно быть проблемой.
search.php имеет образец, который я играл с вами. Стюжник для людей в Lepton AI, которые открыли аналогичный проект, который помог мне уточнить эту подсказку.
Одна из хороших черт недоумения - это то, как они предлагают последующие вопросы. К счастью, это легко воспроизвести.
Для этого вы можете позвонить в свой LLM (параллельно), запрашивая связанные вопросы. И не забудьте снова передать эти цитаты в контексте.
Или вы можете попытаться построить подсказку, чтобы LLM ответил на вопрос и выдвинул связанные вопросы. Это спасает вызов API и некоторые токены, но немного сложно заставить эти LLMS всегда отвечать в последовательном и повторяемом формате.
Чтобы сделать это полным примером, нам нужен удобный пользовательский интерфейс. Я держал пользовательский интерфейс максимально простым, и все в index.html . Я использую Bootstrap, JQuery и некоторые основные CSS / JavaScript, Markdown и JS Syntax Highlighter, чтобы это произошло.
Чтобы улучшить опыт, пользовательский интерфейс делает следующее:
Чтобы изучить рабочий пример, посетите https://yaddleai.com. Это в основном тот же код, хотя я добавил второй поисковый звонок параллельно с изображениями, я написал отдельную страницу, чтобы получить последние новости и несколько других незначительных улучшений.