AIHELPME exploite la puissance de la documentation étendue de Julia et des modèles d'IA avancés pour fournir des conseils de codage sur mesure. En intégrant avec IncivingTools.jl, il offre une approche unique assistée par AI pour répondre directement à vos requêtes de codage dans l'environnement de Julia.
Prudence
Ce n'est qu'un prototype! Nous ne l'avons pas encore réglé, donc votre kilométrage peut varier! Vérifiez toujours vos résultats de LLMS!
Pour installer Aihelpme, utilisez le gestionnaire de package Julia et le nom du package:
using Pkg
Pkg . add ( " AIHelpMe " )Prérequis:
Toute la configuration doit prendre moins de 5 minutes!
Utilisation de base :
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.")
Remarque: Par défaut, nous ne chargeons que la documentation Julia et les docstrings pour les bibliothèques standard. Le modèle par défaut utilisé est GPT-4 Turbo.
Vous pouvez imprimer la réponse en utilisant pprint si vous retournez le ragResult complet ( 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
Remarque: vous pouvez voir le modèle triché car il peut voir cette documentation même ...
Macro aihelp :
aihelp " how to implement quicksort in Julia? "Questions de suivi :
aihelp! " Can you elaborate on the `sort` function? " Remarque: le ! est requis pour les questions de suivi. aihelp! N'ajoute pas de nouveaux contextes / plus d'informations - Pour ce faire, vous devez poser une nouvelle question.
Choisissez des modèles plus rapides : par exemple, pour des questions simples, le GPT 3.5 pourrait être suffisant, alors utilisez l'alias "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!
Débogage : Comment avez-vous trouvé cette réponse? Vérifiez le "contexte" fourni au modèle d'IA (c'est-à-dire les extraits de documentation qui ont été utilisés pour générer la réponse):
AIHelpMe . pprint (AIHelpMe . last_result ())
# Output: Pretty-printed Question + Context + Answer with color highlightsLes points forts de la couleur vous montrent quels mots n'étaient pas pris en charge par le contexte fourni (magenta = complètement nouveau, bleu = partiellement nouveau). C'est une façon assez et intuitive de voir quels noms de fonction ou variables sont composés par rapport à ceux qui étaient dans le contexte.
Vous pouvez changer les Kwargs de pprint pour cacher les annotations ou même montrer le contexte sous-jacent (extrait de la documentation):
AIHelpMe . pprint (AIHelpMe . last_result (); add_context = true , add_scores = false )Conseil
Vos résultats s'amélioreront considérablement si vous permettez à la relance du contexte d'être fourni au modèle (par exemple, aihelp(..., rerank=true) ) ou de changer de pipeline en update_pipeline!(:silver) . Il nécessite la configuration de la clé API Cohere, mais elle est gratuite pour une utilisation communautaire.
Conseil
Voulez-vous exécuter en toute sécurité le code généré? Utilisez AICode à partir de PromptingTools.Experimental.AgentToolsAI. . Il peut exécuter le code dans un module de grattage et capturer les erreurs si elles se produisent (par exemple, s'appliquent directement à la réponse AIMessage comme AICode(msg) ).
Vous avez remarqué des réponses étranges? S'il vous plaît laissez-nous savoir! Voir la section «Aidez-nous à nous améliorer et à déboguer» dans la section avancée des documents!
Formuler des questions :
Exemple de requêtes :
aihelp"What is a DataFrame in Julia?"aihelp"best practices for error handling in Julia"gpt4taihelp!"Could you provide an example?"err REP): # # 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.")
Le package par défaut est expédié avec des intégres prétraités pour toutes les bibliothèques standard Julia, DataFrames et IncivingTools. Grâce à l'incroyable système Julia Artefacts, ces intérêts sont téléchargés / mis en cache / chargés à chaque fois que le package commence.
Remarque: les fonctions ci-dessous ne sont pas encore exportées. Préfixez-les avec AIHelpMe. pour les utiliser.
AIHELPME permet aux utilisateurs d'améliorer ses capacités en intégrant la documentation à partir de tout module Julia chargé. Utilisez new_index = build_index(module) pour créer un index pour un module spécifique (ou un vecteur de modules).
Pour mettre à jour un index existant, y compris les packages nouvellement importés, utilisez new index = update_index(module) ou simplement update_index() pour inclure tous les modules non reconnus. Nous allons ajouter et intégrer la nouvelle documentation pour éviter la duplication et le coût inutiles.
Une fois qu'un index est construit ou mis à jour, vous pouvez choisir de le sérialiser pour une utilisation ultérieure ou le définir comme index principal.
Pour utiliser votre index nouvellement créé comme principale source de requêtes, exécutez load_index!(new_index) . Alternativement, chargez un index préexistant à partir d'un fichier à l'aide de load_index!(file_path) .
L'indice principal des requêtes est conservé dans la variable globale AIHelpMe.MAIN_INDEX .
AIHELPME exploite les incit-outils.jl à communiquer avec les modèles AI.
Nous appliquons un modèle de génération d'augmentation (RAG) de récupération, c'est-à-dire
Cela garantit que les réponses sont non seulement basées sur les connaissances générales de l'IA, mais sont également spécifiquement adaptées à l'écosystème et aux meilleures pratiques de Julia.
Les «Packs de connaissances» proviennent des sites de documentation puis traités avec docscraper.jl.
Note
Si vous souhaitez configurer un processus automatisé pour créer un nouveau pack de connaissances pour un package / organisation, faites-le nous savoir!
Q: Est-il coûteux d'intégrer toute ma documentation? R: Non, l'intégration d'un ensemble complet de documentation est étonnamment rentable. L'intégration d'environ 170 modules, y compris toutes les bibliothèques standard et plus, coûte environ 8 cents et prend moins de 30 secondes. Pour vous faire économiser de l'argent, nous avons déjà intégré les bibliothèques Julia Standard et les avons rendues disponibles en téléchargement via des artefacts. Nous nous attendons à ce que toutes les autres extensions de base de connaissances soient au plus quelques cents (voir étendre la base de connaissances).
Q: Combien cela coûte-t-il de poser une question? R: Chaque requête n'engage qu'une fraction d'un centime, selon la longueur et le modèle choisi.
Q: Puis-je utiliser la clé de l'API d'essai Cohere pour les projets commerciaux? R: Non, une clé d'essai est uniquement à des fins de test. Mais il ne faut que quelques clics pour passer à l'API de production. Le coût n'est que de 1 $ pour 1000 recherches (!!!) et présente de nombreux autres avantages.
Q: Quelle est la précision des réponses? R: Comme toutes les autres réponses génératives de l'IA, c'est-à-dire que cela dépend et vous devriez toujours vérifier.
Q: Puis-je l'utiliser sans Internet? R: Pas pour le moment. Cela pourrait être possible à l'avenir, car InciblitTools.jl prend en charge les LLM locales.
Q: Pourquoi avons-nous besoin de la clé API Cohere? R: L'API de Cohere est utilisée pour recommencer les meilleurs extraits correspondants de la documentation. Il est gratuit à utiliser en quantités limitées (c'est-à-dire ~ mille demandes par mois), ce qui devrait être suffisant pour la plupart des utilisateurs. La relance améliore la qualité et la précision des réponses.
Q: Pourquoi avons-nous besoin d'une clé API Tavily? R: L'API de Tavily est utilisée pour rechercher les meilleurs extraits correspondants de la documentation. Il est gratuit à utiliser en quantités limitées (c'est-à-dire ~ mille demandes par mois), ce qui devrait être suffisant pour la plupart des utilisateurs. La recherche améliore la qualité et la précision des réponses.
Q: Pouvons-nous utiliser des modèles Olllama (hébergés localement)? R: Oui, voir la section avancée des documents.
Q: Comment puis-je créer des packs de connaissances pour mon (s) package (s)? R: Consultez le package docsscraper.jl. C'est ce que nous utilisons pour créer les packs de connaissances chargés dans ce package!
Aihelpme évolue continuellement. Les futures mises à jour peuvent inclure:
Veuillez noter qu'il s'agit simplement d'une pré-libération - nous avons encore un long chemin à parcourir ...