Aihelpme利用了朱莉婭廣泛的文檔和高級AI模型的力量,以提供量身定制的編碼指南。通過與提示Tools.jl集成,它提供了一種獨特的AI輔助方法,可以直接在Julia的環境中回答您的編碼查詢。
警告
這只是一個原型!我們尚未對其進行調整,因此您的里程可能會有所不同!始終檢查LLM的結果!
要安裝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.")
注意:默認情況下,我們僅加載標準庫的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宏:
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) )或將管道更改為update_pipeline!(:silver) ,您的結果將大大改善。它需要設置Cohere API密鑰,但可以免費使用社區使用。
提示
您要安全執行生成的代碼嗎?使用來自strightingtools.spermentiment.agenttoolsai的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 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利用促使Tools.jl與AI模型進行通信。
我們採用檢索增強發電(RAG)模式,即
這樣可以確保答案不僅基於一般的AI知識,而且還專門針對朱莉婭的生態系統和最佳實踐量身定制。
“知識包”來自文檔站點,然後使用docsscraper.jl進行處理。
筆記
如果您想設置一個自動化過程,以為某些軟件包/組織創建新的知識包,請告訴我們!
問:嵌入我的所有文檔是否昂貴?答:不,嵌入一組全面的文檔具有令人驚訝的成本效益。嵌入約170個模塊,包括所有標準庫以及更多的模塊,價格約為8美分,需要不到30秒。為了節省您的錢,我們已經嵌入了Julia標準庫,並可以通過工件下載。我們預計,任何進一步的知識基礎擴展最多都應該是幾美分(請參閱擴展知識庫)。
問:提出問題要花多少錢?答:每個查詢僅會產生一分分的一小部分,具體取決於長度和選擇的模型。
問:我可以將Cohere試用API密鑰用於商業項目嗎?答:不,試用密鑰僅用於測試目的。但是只需單擊幾下即可切換到生產API。費用僅為每1000次搜索(!!!),還有許多其他好處。
問:答案有多準確?答:像其他任何生成的AI答案一樣,即,它取決於,您應該始終仔細檢查。
問:我可以沒有互聯網嗎?答:目前不是。將來可能有可能,因為提示tools.jl支持本地LLM。
問:為什麼我們需要Cohere API密鑰?答:Cohere的API用於將文檔中最好的匹配片段重新排列。它可以免費使用有限的數量(即每月〜000個請求),這對於大多數用戶來說就足夠了。重新排列提高了答案的質量和準確性。
問:為什麼我們需要Tavily API密鑰?答:Tavily的API用於搜索文檔中最佳的匹配片段。它可以免費使用有限的數量(即每月〜000個請求),這對於大多數用戶來說就足夠了。搜索提高了答案的質量和準確性。
問:我們可以使用Ollama(本地託管)型號嗎?答:是的,請參閱文檔中的高級部分。
問:如何為我的軟件包構建知識包?答:查看軟件包DOCSSCRAPER.JL。這就是我們用來構建此軟件包中加載的知識包的方法!
Aihelpme正在不斷發展。未來更新可能包括:
請注意,這僅僅是預發行 - 我們還有很長的路要走...