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正在不断发展。未来更新可能包括:
请注意,这仅仅是预发行 - 我们还有很长的路要走...