Дружим chatGPT 3.5 с выдачей Google в Telegram боте

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Если коротко, то идея в следующем:

А что если перед ответом на вопрос к chatGPT дать ему информацию с первого сайта в выдаче Google по этому же запросу?

И вот что из этого получается:

Для реализации данной идеи нам нужно научить наш Telegram бот подключаться к Google поисковой выдаче и извлекать информацию с первого сайта.

Вот функция для получения выдачи Google без необходимости получения Google API KEY:

import requests import urllib import pandas as pd from requests_html import HTML from requests_html import HTMLSession  def get_source(url):     """Return the source code for the provided URL.      Args:          url (string): URL of the page to scrape.     Returns:         response (object): HTTP response object from requests_html.      """     try:         session = HTMLSession()         response = session.get(url)         return response     except requests.exceptions.RequestException as e:         print(e)          def scrape_google(query, start):     query = urllib.parse.quote_plus(query)     response = get_source("https://www.google.ru/search?start="+str(start)+"&q=" + query)     links = list(response.html.absolute_links)     google_domains = ('https://www.google.',                        'https://google.',                        'https://webcache.googleusercontent.',                        'http://webcache.googleusercontent.',                        'https://policies.google.',                       'https://support.google.',                       'https://maps.google.')      for url in links[:]:         if url.startswith(google_domains):             links.remove(url)     return links

После того, как мы получили URL первого сайта из выдачи Google, мы можем обработать текст с помощью chatGPT 3.5 и получить искомый ответ на вопрос пользователя.

Далее, мы можем связать обработку текста с полученного сайта и ответ chatGPT 3.5 в Telegram боте, который будет отображать ответ пользователю в чате.

Вот такой получился код Telegram бота:

import os import json from telebot import types  import requests from urllib.parse import urlparse from idna import encode import urllib import time  import scrape_google as sg  import openai  os.environ["OPENAI_API_KEY"] = openai.api_key  import telebot bot = telebot.TeleBot('XXXXXX:XXXXXXXXXXXXXXXXXXXXXXX')  import construct_index  class Context:     LOG = {}  @bot.message_handler(content_types=['text']) def start(message):          if '/g' in message.text:         res = ai_search(message)         bot.send_message(message.chat.id, res)         return       def ai_search(message):     query = message.text     promt = query     links = sg.scrape_google(query, 0)     res = ''     count = 0     for l in links:         print('Анализируем сайт:', l, promt)         bot.send_message(message.chat.id, 'Анализируем сайт: ' + l)         ai_reply = custom_promt_AI(l, promt)         if ai_reply != [] and 'Нет ответа' not in ai_reply[0]:             res += ai_reply[0] + f' (Источник: {l})' + ' --- '             if len(res.split(' --- ')) > 0:                 return res         time.sleep(10)         count += 1         if count > 2:             return 'Не удалось найти ответ'     return 'Не удалось найти ответ'   bot.infinity_polling(timeout=10, long_polling_timeout = 5)

А теперь давайте на примере одного запроса сравним ответ нашего бота и ответ самого chatGPT.

Вот тестовый запрос: “Что такое ORM и как она работает в приложениях на Ruby on Rails?

Вот ответ нашего бота:

/g - означает команду поиска в Гугл и отправку результатов для анализа в chatGPT
/g - означает команду поиска в Гугл и отправку результатов для анализа в chatGPT
ORM (Object-Relational Mapping) в Ruby on Rails является инструментом, который позволяет разработчикам работать с базами данных, используя объекты и методы Ruby вместо языка SQL.   ORM в Rails работает следующим образом:   1. Создание модели: Для каждой таблицы в базе данных создается соответствующая модель в Rails.   2. Определение атрибутов: Каждая модель состоит из атрибутов, которые соответствуют столбцам в базе данных.   3. Установка связей: Если имеются связи между таблицами, они могут быть определены в модели при помощи различных методов, таких как has_many и belongs_to.   4. Создание объектов модели: Объекты модели могут быть созданы с помощью конструктора модели, который принимает хэш атрибутов и создает новую запись в базе данных.   5. Выполнение запросов: ORM позволяет выполнить запросы к базе данных, используя методы модели, такие как find, where и order.   6. Изменение объектов: Объекты модели могут быть изменены при помощи методов, таких как update или save.   7. Удаление объектов: Объекты модели могут быть удалены из базы данных с помощью метода destroy.   ORM в Rails обеспечивает более простой и интуитивно понятный способ работы с базами данных, что повышает эффективность и скорость разработки приложений.  --- Источник: https://coderlessons.com/articles/ruby/orm-v-ruby-vvedenie

А вот ответ непосредственно chatGPT:

ORM (Object-Relational Mapping) представляет собой программное обеспечение, которое позволяет построить связь между объектно-ориентированным языком программирования и реляционной базой данных.   В приложениях на Ruby on Rails ORM представлено в виде ActiveRecord - это один из компонентов фреймворка, который обеспечивает удобные возможности для работы с базой данных, необходимые для создания приложения.  ORM ActiveRecord предоставляет удобный способ для выполнения таких задач, как создание, чтение, обновление и удаление данных в базе данных, используя объекты Ruby. Он также позволяет создавать ассоциации между таблицами базы данных, что делает его более интуитивно понятным для разработчиков, не имеющих специализированного образования в области баз данных.  В приложениях на Ruby on Rails, связь между моделями данных и базой данных настраивается через миграции, которые создают и обновляют таблицы в базе данных. ActiveRecord также позволяет создавать сложные запросы к базе данных, используя язык SQL или его альтернативные API.  Таким образом, ORM ActiveRecord позволяет разработчикам Ruby on Rails создавать приложения, взаимодействующие с базой данных, через удобные и простые средства объектно-ориентированного программирования, сокращая время и усилия, необходимые для разработки и поддержки приложения.

Как мы видим ответы сильно отличаются. Главная особенность первого варианта в том, что chatGPT ориентируется на реальную информацию и ничего не фантазирует от себя.

Давайте еще посмотрим некоторые примеры запросов и ответов такого бота:

/g изменения в гражданском кодексе в 2023 году

В гражданском кодексе, начиная с 1 марта 2023 года, появятся новые главы о недвижимости, которые должны урегулировать отношения в этой сфере. Ожидается, что эти изменения дадут возможность упорядочить рынок недвижимости, защитить права потребителей и улучшить условия для всех участников сделок. Также будут введены новые требования по договорам аренды, правам собственности на объекты недвижимости и регулированию споров в этой сфере. В целом, эти изменения позволят существенно усилить защиту прав собственности и интересов граждан в сфере недвижимости.  --- Источник: https://elcode.ru/service/news/obzory-zakonodatelstva-dlya-sudey/28-12-21-s-1-marta-2023-goda-v-gk-rf-poyavyatsya-n

/g Как реализовать аутентификацию с помощью Google OAuth 2.0 в приложении на Python?

Для реализации аутентификации с помощью Google OAuth 2.0 в приложении на Python, вы должны выполнить следующие шаги:  1. Создайте новое учетную запись проекта на Google Developers Console. 2. В разделе "api и сервисы" выберите "Учетные данные" и нажмите кнопку "Создать учетные данные". 3. Выберите "OAuth-клиент ID" и выберите тип приложения "Другое". 4. Введите название приложения и нажмите кнопку "Создать". 5. Пройдите по шагам настройки OAuth 2.0, включая настройки полномочий, добавления списка авторизованных URI-адресов и создание конфигурационного файла с секретным ключом и клиентским идентификатором. 6. Установите библиотеку Python `google-auth` и используйте ее для выполнения аутентификации в вашем приложении.  Вот простой пример кода для аутентификации с помощью Google OAuth 2.0 в вашем приложении на Python:  ```python from google.oauth2 import service_account  # Загрузка секретного ключа в переменную credentials credentials = service_account.Credentials.from_service_account_file(     'path/to/config.json')  # Использование credentials для выполнения запросов к API # ... ```  В этом примере вы должны заменить путь к файлу конфигурации вашего проекта на Google Developers Console. Также помните о необходимости настройки параметров авторизации OAuth 2.0 для вашего приложения.  --- Источник: https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtPython?hl=ru

/g где посидеть в Санкт-Петербурге в пятницу?

В Санкт-Петербурге множество мест, где можно провести пятничный вечер. Ниже представлены несколько вариантов:  1. Бар "Малая Колокольная". Уютное заведение с широким выбором коктейлей и пива, атмосферой спокойствия и комфорта.  2. Ресторан "Terrassa". Это заведение находится на крыше здания с панорамным видом на город. Здесь можно насладиться не только вкусной едой, но и прекрасным видом на Санкт-Петербург.  3. Клуб "Мутабор". Один из самых популярных ночных клубов в городе с оригинальным интерьером и качественной музыкой.  4. Крафтовый паб "Jaws". Здесь можно попробовать разнообразное пиво, а также перекусить вкусными закусками.  5. "Бархаты". Это место подходит для тех, кто любит роскошь и элегантность. Здесь представлен широкий выбор коктейлей и блюд высокой кухни.  6. Ресторан "Felix". Это заведение с многолетней историей и знаменитым интерьером. Здесь можно насладиться вкусной едой и атмосферой старой Европы.  --- Источник: https://www.tourister.ru/world/europe/russia/city/saint_petersburg/tips/7418

/g Как сделать распознавание голоса на Python?

Для распознавания речи на Python можно использовать библиотеку SpeechRecognition, которая поддерживает несколько API распознавания речи, включая Google, Microsoft и другие.   Вот пример кода для распознавания речи с помощью библиотеки SpeechRecognition:  ``` import speech_recognition as sr  # Создаем объект Recognizer r = sr.Recognizer()  # Открываем файл с записью речи (или используем Microphone для записи в реальном времени) with sr.AudioFile('audio_file.wav') as source:     audio_data = r.record(source)  # Используем Google Speech Recognition для распознавания текста на основе аудио text = r.recognize_google(audio_data, language='ru-RU')  # Выводим результат распознавания print(text) ```  В этом примере мы создаем объект `Recognizer`, который позволяет нам работать с записями звука. Затем мы открываем аудио файл и записываем данные аудио в переменную `audio_data`. Затем мы используем функцию `recognize_google` для распознавания текста на основе аудио. В результате мы получаем распознанный текст.  Библиотека SpeechRecognition также поддерживает распознавание речи в реальном времени с помощью микрофона, что может быть полезно для создания приложений для голосового управления.  --- Источник: https://vc.ru/dev/286441-raspoznavanie-i-analiz-rechi-s-pomoshchyu-biblioteki-speech-recognition-pyaudio-i-librosa

/g Что такое геокэшинг и как начать заниматься этим видом активного отдыха?

Геокэшинг - это игра на открытом воздухе, в которой участники отыскивают спрятанные на заданных координатах контейнеры, содержащие записки или жетоны, которые можно обменять на другие призы. Это интересный способ активного отдыха и занятий спортом.  Чтобы начать заниматься геокэшингом, необходимо:  1. Зарегистрироваться на сайте геокэшинга (например, на geocaching.com или geocaching.su); 2. Найти тайник с помощью координат, указанных на сайте; 3. Найти контейнер и сделать запись в его блокноте или ответить на виртуальный вопрос; 4. Обменять найденный жетон или записку на другой приз; 5. Пополнить "коллекцию" найденных тайников и получить удовольствие от активного отдыха на свежем воздухе.  Для занятий геокэшингом можно использовать смартфон или GPS-навигатор для определения координат и поиска тайников. Кроме того, можно присоединиться к группе геокэшеров и участвовать в организованных поисках и соревнованиях.  Занятия геокэшингом отлично подходят для всех, кто любит проводить время на природе и в поисках приключений. Попробуйте это увлекательное занятие и получайте удовольствие от новых открытий и знакомств!  --- Источник: https://geocaching.su/?pn=110

/g  Какие есть способы уменьшения уровня стресса в жизни?

Существует множество способов, которые помогают уменьшить уровень стресса в жизни, вот некоторые из них:  1. Физическая активность: регулярные занятия спортом или физическими упражнениями помогают выпустить накопившееся напряжение и снизить уровень стресса.  2. Расслабляющие практики: медитация, йога, глубокое дыхание и другие расслабляющие практики помогают снять напряжение и улучшить качество сна.  3. Питание: здоровое и сбалансированное питание может помочь снизить уровень стресса.  4. Сон: достаточное количество качественного сна (около 7-8 часов в день) помогает организму восстановиться и справиться со стрессом.  5. Планирование: планирование своего времени и задач помогает снизить уровень стресса, предотвращая перегрузку и неожиданные ситуации.  6. Техники управления стрессом: такие техники, как позитивный подход к жизни, умение принимать решения и управлять своими эмоциями, могут помочь справиться со стрессом в повседневной жизни.  7. Общение: поддержка со стороны семьи, друзей или коллег может помочь снять стресс и преодолеть трудности.  --- Источник: https://www.wrike.com/ru/blog/13-sposobov-bystrogo-snyatiya-stressa-na-rabochem-meste/

Выводы:

Используя такой подход к запросам к chatGPT мы получаем принципиально другие ответы. Думаю в каких-то случаях это может сократить время на поиск информации.

А что думаете Вы о таком подходе к поиску информации?

Если будут вопросы по реализации бота, пишите в мой ТГ.


Источник: habr.com

Комментарии: