Skip to content

Репозиторий gpt-tools включает PHP скрипты для автоматизации задач с текстами, используя API OpenAI. Полезен для разработки и управления кодом.

Notifications You must be signed in to change notification settings

olegopro/gpt-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Инструменты для работы с файлами

Этот проект содержит набор утилит для работы с файлами, такими как объединение файлов, генерация коммитов и построение структуры директорий.

Содержание

  1. run_merge_files.php
  2. commit_generator.php
  3. draw_tree.php
  4. search_code.php

run_merge_files.php

Этот скрипт объединяет файлы в один.

Конфигурация

Параметр Тип Описание
projectDir string Путь к директории проекта. Определяет корневую директорию для работы.
dependencyScanRoot string Директория, откуда начинается сканирование зависимостей.
paths array Список путей к папкам или файлам, которые должны быть объединены.
scanDependencies boolean Определяет, нужно ли сканировать зависимости для файлов.
extensions array Массив допустимых расширений файлов. Можно указать *, чтобы включить все файлы.
removeStyleTag boolean Удалять ли теги <style> из файлов.
removeHtmlComments boolean Удалять ли HTML комментарии.
removeSingleLineComments boolean Удалять ли однострочные комментарии.
removeMultiLineComments boolean Удалять ли многострочные комментарии.
removeEmptyLines boolean Удалять ли пустые строки.
ignoreFiles array Массив файлов, которые нужно игнорировать при объединении.
ignoreDirectories array Массив директорий, которые нужно игнорировать при сканировании.
outputFile string Путь к файлу, в который будет записан объединенный результат.

Пример использования

$config = [
    'projectDir' => '/project-directory',
    'dependencyScanRoot' => '/project-directory/src',
    'paths' => [
        '/folder',
        '/folder/file.php'
    ],
    'scanDependencies' => true,
    'extensions' => ['php', 'vue', 'js', 'json', 'ts', 'html', 'css', 'scss'],
    'removeStyleTag' => false,
    'removeHtmlComments' => false,
    'removeSingleLineComments' => false,
    'removeMultiLineComments' => false,
    'removeEmptyLines' => false,
    'ignoreFiles' => ['ignore_this.php', 'ignore_that.js'],
    'ignoreDirectories' => ['folder_to_ignore', 'another_folder_to_ignore'],
    'outputFile' => 'merged_files.txt'
];

$merger = new MergeFiles($config);
$merger->merge();

commit_generator.php

Этот скрипт генерирует сообщения для коммитов, используя API OpenAI. Он получает информацию о разнице файлов из stdin и формирует название и описание коммита на основе этой информации.

Пример использования

git diff | php commit_generator.php "Дополнительные инструкции"

draw_tree.php

Этот скрипт создает дерево файловой структуры для заданной директории и сохраняет его в файл directory_tree.txt.

Конфигурация

Параметр Тип Описание
directoryPath string Путь к директории, для которой нужно построить дерево файлов.
extensions array Массив расширений файлов для включения в дерево.
ignoredDirectories array Массив папок, которые нужно игнорировать при построении дерева.

Пример использования

$directoryPath = '/folder';
$extensions = ['php', 'vue', 'js'];
$ignoredDirectories = ['node_modules', 'vendor', '.git'];

echo drawTree($directoryPath, '', true, $extensions, $ignoredDirectories);

Дерево будет записано в файл directory_tree.txt.


search_code.php

Этот скрипт выполняет семантический поиск по коду с использованием векторных представлений (embeddings) от Voyage AI. Он позволяет находить релевантные фрагменты кода на основе текстового запроса, используя семантическое понимание кода.

Требования

  • PHP 7.4 или выше
  • API ключ Voyage AI
  • Объединенный файл с кодом (созданный с помощью run_merge_files.php)

Конфигурация

Параметр Тип Описание
apiKey string Ключ API Voyage для доступа к сервису векторных представлений.
model string Модель Voyage для создания embeddings (по умолчанию 'voyage-code-3').
mergedFilePath string Путь к объединенному файлу с кодом (по умолчанию 'merged_files.txt').
embeddingsFilePath string Путь для сохранения/загрузки embeddings (по умолчанию 'code_embeddings.json').

Опции командной строки

Опция Описание
--query "запрос" Текст поискового запроса.
--file merged_files.txt Путь к объединенному файлу с кодом.
--output results.txt Путь для сохранения результатов поиска.
--rebuild Принудительно пересоздать embeddings.
--help Показать справку по использованию.

Пример использования

# Базовый поиск
php search_code.php "Как обрабатываются зависимости"

# Поиск с дополнительными параметрами
php search_code.php --query "Как обрабатываются зависимости" --file code.txt --output results.txt --rebuild

Принцип работы

  1. Скрипт разбивает объединенный файл с кодом на отдельные фрагменты по маркерам начала и конца файлов.
  2. Для каждого фрагмента создается векторное представление с помощью API Voyage.
  3. При поиске запрос также преобразуется в векторное представление.
  4. Вычисляется косинусная близость между вектором запроса и векторами фрагментов кода.
  5. Возвращаются наиболее релевантные фрагменты кода, отсортированные по степени близости.
  6. Результаты сохраняются в файл для дальнейшего использования.

Класс CodeEmbeddingsSearch

Основная функциональность реализована в классе CodeEmbeddingsSearch, который предоставляет следующие возможности:

  • Разбиение объединенного файла на фрагменты кода
  • Создание и сохранение векторных представлений для фрагментов кода
  • Семантический поиск по коду на основе текстового запроса
  • Вычисление релевантности фрагментов кода к запросу
  • Сохранение результатов поиска в файл

Класс автоматически кэширует векторные представления в JSON-файле для повторного использования, что позволяет значительно ускорить последующие поисковые запросы.

About

Репозиторий gpt-tools включает PHP скрипты для автоматизации задач с текстами, используя API OpenAI. Полезен для разработки и управления кодом.

Resources

Stars

Watchers

Forks