AIHELPMEは、ジュリアの広範なドキュメントと高度なAIモデルの力を活用して、カスタマイズされたコーディングガイダンスを提供します。 empriskTools.jlと統合することにより、ジュリアの環境でコーディングクエリに直接答えるためのユニークでAIアシストされたアプローチを提供します。
注意
これはプロトタイプです!まだ調整していないので、あなたの走行距離は異なるかもしれません!常にLLMSの結果を確認してください!
Aihelpmeをインストールするには、Julia Package Managerとパッケージ名を使用します。
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.")
注:デフォルトとして、標準ライブラリにJuliaドキュメントとDocstringsのみをロードします。使用されるデフォルトモデルはGPT-4ターボです。
完全なragresult( return_all=true )を返す場合、 pprintを使用して答えをきれいにプリントできます。
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!
デバッグ:どのようにしてその答えを思いついたのですか? AIモデルに提供される「コンテキスト」を確認します(つまり、回答を生成するために使用されたドキュメントスニペット):
AIHelpMe . pprint (AIHelpMe . last_result ())
# Output: Pretty-printed Question + Context + Answer with color highlights色のハイライトは、提供されたコンテキストによってサポートされていない単語(Magenta =完全に新しい、青=部分的に新しい)を示します。これは、どの関数名または変数がコンテキストにあるかを確認するための非常に直感的な方法です。
pprintのKwargsを変更して注釈を隠すか、潜在的に根本的なコンテキスト(ドキュメントからのスニペット)を表示することもできます。
AIHelpMe . pprint (AIHelpMe . last_result (); add_context = true , add_scores = false )ヒント
コンテキストの再ランキングをモデルに提供することを有効にする場合(例えば、 aihelp(..., rerank=true) )、またはpipelineをupdate_pipeline!(:silver)に変更できる場合、結果は大幅に改善されます。 Cohere APIキーをセットアップする必要がありますが、コミュニティでの使用は無料です。
ヒント
生成されたコードを安全に実行しますか? prospingtools.experimental.agenttoolsaiのAICodeを使用しますPromptingTools.Experimental.AgentToolsAI. 。コードをスクラッチモジュールで実行し、発生した場合にエラーをキャッチできます(たとえば、 AICode(msg)のようなAIMessage応答に直接適用します)。
奇妙な答えに気づきましたか?お知らせください!ドキュメントの高度なセクションで「改善とデバッグを手伝ってください」を参照してください!
質問の策定:
クエリの例:
aihelp"What is a DataFrame in Julia?"aihelp"best practices for error handling in Julia"gpt4taihelp!"Could you provide an example?"err REPL変数を使用): # # 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.")
デフォルトのパッケージは、すべてのジュリア標準ライブラリ、データフレーム、およびプロンプトツールに加工された埋め込みを備えた出荷されます。驚くべきジュリアアーティファクトシステムのおかげで、これらの埋め込みは、パッケージが開始されるたびにダウンロード/キャッシュ/ロードされます。
注:以下の機能はまだエクスポートされていません。それらをAIHelpMe.それらを使用する。
AIHELPMEを使用すると、ユーザーは、ロードされたJuliaモジュールからドキュメントを埋め込むことで機能を強化できます。 new_index = build_index(module)を使用して、特定のモジュール(またはモジュールのベクトル)のインデックスを作成します。
新しくインポートされたパッケージを含む既存のインデックスを更新するには、 new index = update_index(module)または単にupdate_index()を使用して、すべての認識されていないモジュールを含めます。不必要な複製とコストを避けるために、新しいドキュメントのみを追加および埋め込みます。
インデックスが構築または更新されたら、後で使用するためにシリアル化するか、プライマリインデックスとして設定することを選択できます。
新しく作成されたインデックスをクエリのメインソースとして使用するには、 load_index!(new_index)を実行します。または、 load_index!(file_path)を使用して、ファイルから既存のインデックスをロードします。
クエリのメインインデックスは、グローバル変数AIHelpMe.MAIN_INDEXに保持されます。
AIHELPMEは、AIモデルと通信するように促しています。
検索拡張生成(RAG)パターンを適用します。
これにより、回答は一般的なAIの知識だけでなく、ジュリアのエコシステムとベストプラクティスに特化していることが保証されます。
「ナレッジパック」はドキュメントサイトから供給され、docsscraper.jlで処理されます。
注記
パッケージ/組織用の新しいナレッジパックを作成するために自動化されたプロセスを設定したい場合は、お知らせください!
Q:すべてのドキュメントを埋め込むのは費用がかかりますか? A:いいえ、包括的なドキュメントセットを組み込むことは、驚くほど費用対効果が高いです。すべての標準ライブラリなどを含む約170のモジュールを埋め込むには、約8セントかかり、30秒未満かかります。お金を節約するために、すでにジュリアの標準ライブラリを埋め込み、アーティファクト経由でダウンロードできるようにしました。さらなる知識ベースの拡張機能は、せいぜい数セントであることを期待しています(知識ベースの拡張を参照)。
Q:質問をするのにいくらかかりますか? A:各クエリには、長さと選択されたモデルに応じて、ほんの数セントのみが発生します。
Q:商用プロジェクトにCohere Trial APIキーを使用できますか? A:いいえ、トライアルキーはテスト目的のみを目的としています。ただし、生産APIに切り替えるのに数回クリックするだけです。コストは1000検索(!!!)あたりわずか1ドルで、他にも多くの利点があります。
Q:答えはどれくらい正確ですか? A:他の生成AIの回答と同様に、つまり、それは依存し、常に再確認する必要があります。
Q:インターネットなしで使用できますか? A:現時点ではありません。 PromptingTools.jlはローカルLLMSをサポートするため、将来的には可能かもしれません。
Q:Cohere APIキーが必要なのはなぜですか? A:CohereのAPIは、ドキュメントから最高のマッチングスニペットを再ランクするために使用されます。限られた数量(つまり、月あたりの〜1,000リクエスト)で無料で使用できます。これは、ほとんどのユーザーに十分なはずです。再ランキングは、回答の品質と正確さを向上させます。
Q:なぜTavily APIキーが必要なのですか? A:TavilyのAPIは、ドキュメントから最高のマッチングスニペットを検索するために使用されます。限られた数量(つまり、月あたりの〜1,000リクエスト)で無料で使用できます。これは、ほとんどのユーザーに十分なはずです。検索すると、回答の質と正確さが向上します。
Q:Ollama(ローカルホスト)モデルを使用できますか? A:はい、ドキュメントの詳細セクションを参照してください。
Q:パッケージ用のナレッジパックを構築するにはどうすればよいですか? A:パッケージをチェックしてくださいdocsscraper.jl。このパッケージにロードされたナレッジパックを構築するために使用するものです!
aihelpmeは継続的に進化しています。将来の更新には次のものが含まれます。
これは単なるプレリリースであることに注意してください - 私たちにはまだ長い道のりがあります...