Aihelpme использует силу обширной документации Джулии и передовых моделей ИИ для обеспечения индивидуального руководства по кодированию. Интегрируя с rectingTools.jl, он предлагает уникальный, A-ассистированный подход к ответам на ваши запросы кодирования непосредственно в среде Юлии.
Осторожность
Это всего лишь прототип! Мы еще не настроили его, поэтому ваш пробег может различаться! Всегда проверяйте свои результаты от LLMS!
Чтобы установить Aihelpme, используйте диспетчер пакетов Julia и имя пакета:
using Pkg
Pkg . add ( " AIHelpMe " )Предварительные условия:
Вся настройка должна занять менее 5 минут!
Основное использование :
using AIHelpMe
aihelp ( " How do I implement quicksort in Julia? " ) [ Info: Done generating response. Total cost: $0.015
AIMessage("To implement quicksort in Julia, you can use the `sort` function with the `alg=QuickSort` argument.")
Примечание. По умолчанию мы загружаем только документацию в Юлии и Docstrings для стандартных библиотек. Используемая модель по умолчанию-GPT-4 Turbo.
Вы можете напечатать ответ с помощью pprint , если вернете полный Ragresult ( return_all=true ):
using AIHelpMe : pprint
result = aihelp ( " How do I implement quicksort in Julia? " , return_all = true )
pprint (result) --------------------
QUESTION(s)
--------------------
- How do I implement quicksort in Julia?
--------------------
ANSWER
--------------------
To implement quicksort in Julia, you can use the [5,1.0]`sort`[1,1.0] function with the [1,1.0]`alg=QuickSort`[1,1.0] argument.[2,1.0]
--------------------
SOURCES
--------------------
1. https://docs.julialang.org/en/v1.10.2/base/sort/index.html::Sorting and Related Functions/Sorting Functions
2. https://docs.julialang.org/en/v1.10.2/base/sort/index.html::Sorting and Related Functions/Sorting Functions
3. https://docs.julialang.org/en/v1.10.2/base/sort/index.html::Sorting and Related Functions/Sorting Algorithms
4. SortingAlgorithms::/README.md::0::SortingAlgorithms
5. AIHelpMe::/README.md::0::AIHelpMe
Примечание: вы можете увидеть модель обманутой, потому что она может увидеть эту самую документацию ...
aihelp Macro :
aihelp " how to implement quicksort in Julia? "Последующие вопросы :
aihelp! " Can you elaborate on the `sort` function? " Примечание ! требуется для последующих вопросов. aihelp! Не добавляет новый контекст/больше информации - чтобы сделать это, вам нужно задать новый вопрос.
Выберите более быстрые модели : например, для простых вопросов, GPT 3.5 может быть достаточно, поэтому используйте псевдоним "GPT3T":
aihelp " Elaborate on the `sort` function and quicksort algorithm " gpt3t [ Info: Done generating response. Total cost: $0.002 -->
AIMessage("The `sort` function in programming languages, including Julia.... continues for a while!
Отладка : Как вы придумали этот ответ? Проверьте «контекст», предоставленную для модели ИИ (т.е. фрагменты документации, которые использовались для генерации ответа):
AIHelpMe . pprint (AIHelpMe . last_result ())
# Output: Pretty-printed Question + Context + Answer with color highlightsОсновные моменты цвета показывают, какие слова не были поддержаны предоставленным контекстом (magenta = совершенно новый, синий = частично новый). Это довольно и интуитивно понятный способ увидеть, какие имена функций или переменные составлены, а какие были в контексте.
Вы можете изменить Kwargs of pprint , чтобы скрыть аннотации или, возможно, даже показать базовый контекст (фрагменты из документации):
AIHelpMe . pprint (AIHelpMe . last_result (); add_context = true , add_scores = false )Кончик
Ваши результаты значительно улучшатся, если вы позволите повторно выполнять контекст, который будет предоставлен для модели (например, aihelp(..., rerank=true) ) или изменить трубопровод на update_pipeline!(:silver) . Это требует настройки ключа API COUERE, но он бесплатно для использования сообщества.
Кончик
Вы хотите безопасно выполнить сгенерированный код? Используйте AICode от PromptingTools.Experimental.AgentToolsAI. Полем Он может выполнить код в модуле царапины и уловить ошибки, если они произойдут (например, применить непосредственно к ответу AIMessage , как AICode(msg) ).
Заметили несколько странных ответов? Пожалуйста, дайте нам знать! См. Раздел «Помогите нам улучшить и отлаживать» в расширенном разделе документов!
Сформулирование вопросов :
Пример запросов :
aihelp"What is a DataFrame in Julia?"aihelp"best practices for error handling in Julia"gpt4taihelp!"Could you provide an example?"err Reply): # # define mock function to trigger method error
f (x :: Int ) = x ^ 2
f ( Int8 ( 2 ))
# we get: ERROR: MethodError: no method matching f(::Int8)
# Help is here:
aihelp " What does this error mean? $ err " # Note the $err to interpolate the stacktrace [ Info: Done generating response. Total cost: $0.003
AIMessage("The error message "MethodError: no method matching f(::Int8)" means that there is no method defined for function `f` that accepts an argument of type `Int8`. The error message also provides the closest candidate methods that were found, which are `f(::Any, !Matched::Any)` and `f(!Matched::Int64)` in the specified file `embed_all.jl` at lines 45 and 61, respectively.")
Пакет по умолчанию по умолчанию с предварительно обработанными встраиваниями для всех стандартных библиотек, данных и подсказок DataFrames Julia. Благодаря удивительной системе артефактов Джулии эти встраивания загружаются/кэшируются/загружаются каждый раз, когда запускается пакет.
ПРИМЕЧАНИЕ. Функции ниже еще не экспортируются. Префикс их с помощью AIHelpMe. использовать их.
Aihelpme позволяет пользователям расширять свои возможности, внедряя документацию из любого загруженного модуля Юлии. Используйте new_index = build_index(module) для создания индекса для конкретного модуля (или вектора модулей).
Чтобы обновить существующий индекс, включая вновь импортированные пакеты, используйте new index = update_index(module) или просто update_index() чтобы включить все нераспознанные модули. Мы добавим и внедрим только новую документацию, чтобы избежать ненужного дублирования и стоимости.
После того, как индекс будет построен или обновлен, вы можете выбрать сериализацию его для последующего использования или установить его в качестве основного индекса.
Чтобы использовать свой недавно созданный индекс в качестве основного источника для запросов, выполните load_index!(new_index) . В качестве альтернативы загрузите ранее существовавший индекс из файла с помощью load_index!(file_path) .
Основной индекс для запросов проводится в глобальной переменной AIHelpMe.MAIN_INDEX .
Aihelpme использует reptingtools.jl для общения с моделями ИИ.
Мы применяем образец получения увеличения поиска (RAG), т.е.
Это гарантирует, что ответы основаны не только на общих знаниях ИИ, но и специально адаптированы к экосистеме Джулии и лучшим практикам.
«Пакеты знаний» поступают из сайтов документации, а затем обрабатываются с помощью docsscraper.jl.
Примечание
Если вы хотите настроить автоматический процесс для создания нового пакета знаний для некоторого пакета/организации, сообщите нам об этом!
В: Дорого ли внедрить всю мою документацию? A: Нет, внедрение комплексного набора документации удивительно экономически эффективно. Внедряя около 170 модулей, в том числе все стандартные библиотеки и больше, стоит приблизительно 8 центов и занимает менее 30 секунд. Чтобы сэкономить вам деньги, мы уже встроили стандартные библиотеки Юлии и сделали их доступными для загрузки через артефакты. Мы ожидаем, что любые дальнейшие расширения базы знаний должны быть не более нескольких центов (см. Расширение базы знаний).
В: Сколько стоит задать вопрос? A: Каждый запрос вносит только часть цента, в зависимости от длины и выбранной модели.
В: Могу ли я использовать Cohere Trial API -ключ для коммерческих проектов? A: Нет, пробный ключ предназначен только для тестирования. Но для перехода на производственный API требуется всего несколько кликов. Стоимость составляет всего 1 доллар за 1000 поисков (!!!) и имеет много других преимуществ.
В: Насколько точны ответы? A: Как и любые другие генеративные ответы ИИ, то есть, это зависит, и вы всегда должны дважды проверять.
В: Могу ли я использовать его без Интернета? A: Не сейчас. Это может быть возможно в будущем, так как reftingTools.jl поддерживает местные LLMS.
В: Зачем нам нужен ключ API Cohere? A: API COHERE используется для повторного оценки лучших соответствующих фрагментов из документации. Он бесплатно использовать в ограниченных количествах (то есть ~ тысячи запросов в месяц), что должно быть достаточно для большинства пользователей. Повторная оценка улучшает качество и точность ответов.
В: Зачем нам нужен ключ Tavily API? A: API Tavily используется для поиска лучших подходящих фрагментов из документации. Он бесплатно использовать в ограниченных количествах (то есть ~ тысячи запросов в месяц), что должно быть достаточно для большинства пользователей. Поиск улучшает качество и точность ответов.
В: Можем ли мы использовать модели Ollama (локально проводятся)? A: Да, см. Расширенный раздел в документах.
В: Как я могу создать пакеты знаний для моего пакета (ы)? A: Проверьте пакет docsscraper.jl. Это то, что мы используем для создания пакетов знаний, загруженных в этот пакет!
Aihelpme постоянно развивается. Будущие обновления могут включать в себя:
Обратите внимание, что это всего лишь предварительный релиз - нам еще предстоит пройти долгий путь ...