Программа выводящая свой код python

В предыдущей статье я рассказывал, как можно доучить GPT на собственных взглядах и вкусах. Сегодня попробуем дать GPT возможность поработать программистом по‑настоящему — с запуском кода и отладкой без участия человека. Весь код опубликован в репозитарии.

Как многие уже убедились, ChatGPT хорош, но есть некоторые типы задач, с которыми у него возникают трудности:

  1. Он не может получать новые актуальные знания из сети.
  2. Он не может выполнить какие‑либо действия.
  3. У него сложности с алгоритмическими задачами (перевернуть строку, решить уравнение, произвести вычисления с применением численных методов).

И если задача 1 решается с помощью BingChat, то 2 и 3 мы сегодня будем решать в рамках данного туториала.

Основная идея такая: пусть ChatGPT сам решает, может ли он справиться с задачей «в уме» или же это лучше сделать с помощью написания кода на python, а наш сервер сразу же выполняет этот код и снова отдает результат работы ChatGPT, чтобы он мог его интерпретировать и выдать пользователю окончательный ответ или исправить ошибку в своей программе и попытаться ещё раз.

НАСТРОЙКА VS CODE + КАСТОМИЗАЦИЯ ПОД PYTHON 2023 | ТЕМЫ, ИКОНКИ, ДОПОЛНЕНИЯ КАК У МЕНЯ

Схема работы бота

Давайте посмотрим, как это работает на примерах. (Важно отметить, что это конечно же happy day scenario — в реальности было достаточно много ошибок и ситуаций, когда код написаный ChatGPT так и не заработал. В этом случае сеть выдает вполне адекватные оправдания и рекомендации, и приносит извинения пользователю).

Начнем со школьных задач по линейной алгебре

А что, так разве можно было? Видно, что GPT написал код, выводящий цифры, а затем обернул результат в корректный ответ. Что ж, попробуем ещё задачку:

И снова правильное решение, хотя подход на этот раз несколько другой.

Переходим к практическим задачам — загрузка данных из интернета!

Так, проверим. похоже, что все так и есть!

Здесь мы видим, как ChatGPT использует предыдущий контекст разговора и извлеченные ранее знания о цене рубля в долларах (о цене биткоина я также спрашивал раньше).

Задачи на матанализ и численные методы

Здесь у меня возникли сложности. Сеть лихо пользуется библиотеками которые, умеют дифференцировать, интегрировать, считать пределы и делать всякие штуки, которые в школе не проходили:) с помощью аналитических приемов. Вот как это выглядит:

Читайте также:
Объект созданный в какой либо программе называется

Разнёс чужой код за 15 секунд. Часть 1 #код #айти #программирование #рефакторинг

Здесь стоит обратить внимание на то, как классно отработала пост‑обработка ответа. Код возвращает только число, а сеть добавляет к нему справочную информацию о том, что это за число. Чтож, попробуем задачу, которая явно не имеет аналитического решения:

Ну почти. хоть решение найдено, но всё ещё сложно понять, насколько система хорошо понимает проблему. Использовать готовые библиотеки такого уровня — много ума не надо. Попробуем ей это запретить:

Очень классный результат! Сеть не только решила пример, но и дала пояснение о том, каким именно методом воспользовалась, а результат совпал с предыдущим, что говорит о том, что решение скорее всего верное. На всякий случай проверим:

Как работает бот?

На данный момент стек бота выглядит так:

  • Python 3.9, библиотека для работы с Telegram — pyTelegramBotAPI
  • Модель — gpt-4–0314
  • Максимальное число попыток запустить свой код в рантайме — 7

Самое интересное это конечно же промпт:

Ты полезный ассистент с ИИ, который готов помочь своему пользователю. Ты даешь короткие содержательные ответы, обычно не более 100 символов. Если я попрошу тебя что-то сделать, что можно сделать с помощью программы на python, ты присылаешь мне код программы без объяснений. Если программа должна возвращать какой-то результат, то выводи его с помощью print.

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

Если тебе нужна какая-то информация, то получай её из интернета с помощью python и обрабатывай с помощью кода. Не используй в коде ключи для доступа и токены. Для написания кода используй специальную библиотеку, которая называется gpt_utils.

Она содержит следующие функции: gpt_utils.send_message_to_all(text) — отправляет сообщение всем пользователям gpt_utils.send_email(to, sub, text) — отправляет письмо Используй библиотеку yfinance для доступа к ценам акций Для работы с вопросами о погоде используй python_weather

В целом всё понятно — мы честно сообщаем боту что собираемся делать. Специальная библиотека gpt_utils это проверка, сможет ли бот использовать нечто, чего он точно не встречал на этапе обучения (ответ — да, может).

Одна из основных проблем, с которой я столкнулся — понять, что именно прислал нам GPT — код на питоне или комментарий. К сожалению, не смотря на явные просьбы, он переодически разбавляет код своими пояснениями, иногда оборачивая код в специальные маркеры, а иногда присылая его текстом. Здесь пришлось немножко побыдлокодить и вставить разные проверки, которые просто смотрят на наличие в ответе ключевых слов и пытаются вытащить куски кода из текста, если он помечен маркерами. В первом приближении это работает, но здесь явно есть что улучшить.

Читайте также:
Как программу прошоу продюсер перевести на русский

Как выполняется питоновский код и происходит коррекция ошибок? Тут всё очень просто, питон, будучи интерпретируемым, позволяет выполнить код прямо из строки.

def executeCode(code, user): try: f = StringIO() with redirect_stdout(f): exec(code, globals()) res = f.getvalue() res = «n».join(res) return res, True except Exception as e: error = «».join(traceback.format_exception_only(e)).strip() return error, False # Обрабатываем запрос от пользователя process_rq(user_request): ans = . отправка запроса и истории чата в openAI . if _is_python_code(ans): ans, res = executeCode(ans, user) if res: # Код завершился без ошибок if ans == None or ans == «»: return None ans = «Я запустил код и получил результат: » + ans return process_rq(user_id, ans, deep + 1) else: # Код завершился с ошибкой ans = «Я запустил код и получил ошибку: » + ans + «. Попробуй исправить код и пришли его снова целиком. Не пиши ничего кроме кода.» return process_rq(user_id, ans, deep + 1) else: return ans

Логика простая — если попытка выполнить код приводит к ошибке, то мы явно просим ChatGPT её исправить, передав её текст. По моему опыту в половине случаев это ей удаётся!

Ну а дальше остается только дело техники — работа с историей сообщений разных пользователей, команда для сброса, обработка ошибок. За стиль и качество кода прошу сильно не пинать, так как сделано все было за 1 вечер и 90% кода было написано совместными усилиями того же ChatGPT и Copilot.

Код бота вы можете посмотреть и позапускать из моего репозитария на GitHub. Там также лежат реализации ботов из прошлой статьи, но в этот раз нас интересует только один — tg_bot_with_python.py . Для работы вам понадобится токен из аккаунта OpenAI и токен своего Telegram бота.

Пара слов про метамышление

Как пишет Стивен Флеминг в своей книге «Метамышление», способность к познанию своих ментальных возможностей (понимание и применение того, что ты чего-то не знаешь, а в чем-то сомневаешься, а окружающие тебя существа не знают чего-то, что известно тебе) — один из самых сложных видов мозговой деятельности, предвестник сознания, которым обладают только люди, дельфины и некоторые человекоподобные обезьяны, например шимпанзе.

Читайте также:
Алгоритм расчета заработной платы в программе 1с

Здесь мы видим, что нейронная сеть тоже проявляет способности к метапознанию — она неплохо распознает задачи, которые неспособна решить «в уме» и активно пользуется данными ей инструментами для их решения. Мне кажется, что это невозможно без построения сетью модели самой себя в окружающем мире. Есть о чем задуматься.

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

Python-библиотеки для визуализации кода

В статье приводится обзор трех open-source библиотек Python для визуализации кода, которые помогут разработчикам наглядно визуализировать исполнение написанного кода. Эти библиотеки являются более простыми в установке и использовании аналогами модуля Logging.

Pyheat

Pyheat предоставляет построчное время выполнение кода в виде цветной карты. Pyheat можно установить из PyPl с помощью команды

pip install py-heat

и импортировать с помощью команды

from pyheat import PyHeat

Для построения карты нужно использовать файл с кодом в качестве аргумента функции PyHeat:

ph = PyHeat(‘merge_sort.py’) ph.create_heatmap() ph.show_heatmap()

Результат выглядит так:

Heartrate

В отличие от Pyheat, Heartrate показывает, сколько раз была выполнена каждая строка кода. Результаты выводятся в отдельном окне браузера. Команды для установки и импорта:

pip install heartrate import heartrate

Для визуализации выполнения кода нужно вставить в него команду

heartrate.trace(browser=True)

Результат выглядит так:

Числа возле номера строки обозначают количество выполнений данной строки кода. Длина полос рядом с этими числами обозначает число выполнений (чем длиннее полоса — тем их было больше) и насколько давно они выполнялись (чем темнее полоса — тем раньше). Преимуществом библиотеки является то, что она строит распределения в режиме реального времени.

Snoop

Snoop используется для отладки кода и позволяет выяснить, почему код выдает неверные результаты. В частности, Snoop выводит значения локальных переменных в ходе выполнения кода. Установка:

pip install snoop

Источник: neurohive.io

Графика

Бла, бла код

Вот такого плана вещи мы сможем создавать в конке урока: Делается это при помощи программы — редактора векторной графики — InkScape.

Бла, бла код

21.06.2016 0 47

Начните с создания фона. После этого добавте слой с текстом. Для этого воспользуйтесь инструментом «Текст»: …должно получится что-то вроде

Бла, бла код

21.06.2016 0 47

Привыкли рисовать userbar’ы в фотошопе? Ничего страшного, в гимпе это делается практически аналогично! Прежде всего создадим изображение: После чего зальём

Бла, бла код

22.11.2012 0 62

Прежде всего что у нас должно получится: Открое Inksape и создадим текст при помощи инструмента «текст»: Создайте какой нибуть текст «

Источник: blablacode.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru