Aihelpme aproveita o poder da extensa documentação de Julia e modelos avançados de IA para fornecer orientações de codificação personalizadas. Ao integrar-se ao PromptingTools.jl, ele oferece uma abordagem única e assistida de AI para responder às suas consultas de codificação diretamente no ambiente de Julia.
Cuidado
Este é apenas um protótipo! Ainda não o sintonizamos, então sua milhagem pode variar! Sempre verifique seus resultados do LLMS!
Para instalar aihelpme, use o Julia Package Manager e o nome do pacote:
using Pkg
Pkg . add ( " AIHelpMe " )Pré -requisitos:
Toda a configuração deve levar menos de 5 minutos!
Uso básico :
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.")
NOTA: Como padrão, carregamos apenas a documentação de Julia e o DocStrings para bibliotecas padrão. O modelo padrão usado é o GPT-4 Turbo.
Você pode imprimir a resposta bonita usando pprint se retornar o Ragresult completo ( 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
NOTA: Você pode ver o modelo enganado porque pode ver esta mesma documentação ...
aihelp Macro :
aihelp " how to implement quicksort in Julia? "Perguntas de acompanhamento :
aihelp! " Can you elaborate on the `sort` function? " Nota: o ! é necessário para perguntas de acompanhamento. aihelp! Não adiciona novo contexto/mais informações - para fazer isso, você precisa fazer uma nova pergunta.
Escolha modelos mais rápidos : por exemplo, para perguntas simples, o GPT 3.5 pode ser suficiente, então use o pseudônimo "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!
Depuração : Como você encontrou essa resposta? Verifique o "contexto" fornecido ao modelo de IA (ou seja, os trechos de documentação que foram usados para gerar a resposta):
AIHelpMe . pprint (AIHelpMe . last_result ())
# Output: Pretty-printed Question + Context + Answer with color highlightsOs destaques das cores mostram quais palavras não foram suportadas pelo contexto fornecido (magenta = completamente novo, azul = parcialmente novo). É uma maneira bastante e intuitiva de ver quais nomes ou variáveis de funções são constituídas em comparação com quais estavam no contexto.
Você pode alterar os Kwargs do pprint para ocultar as anotações ou potencialmente até mostrar o contexto subjacente (trechos da documentação):
AIHelpMe . pprint (AIHelpMe . last_result (); add_context = true , add_scores = false )Dica
Seus resultados melhorarão significativamente se você permitir que a renúncia do contexto seja fornecida ao modelo (por exemplo, aihelp(..., rerank=true) ) ou altere o pipeline para update_pipeline!(:silver) . Requer a configuração da chave da API Cohere, mas é gratuita para uso da comunidade.
Dica
Deseja executar com segurança o código gerado? Use AICode de PromptingTools.Experimental.AgentToolsAI. . Ele pode executar o código em um módulo de arranhão e erros de captura se eles aconteceram (por exemplo, aplicar diretamente à resposta AIMessage como AICode(msg) ).
Notou algumas respostas estranhas? Por favor, avise -nos! Consulte a seção "Ajude -nos a melhorar e depurar" na seção avançada dos documentos!
Formulando perguntas :
Exemplo de consultas :
aihelp"What is a DataFrame in Julia?"aihelp"best practices for error handling in Julia"gpt4taihelp!"Could you provide an example?"err ): # # 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.")
O pacote, por padrão, navios com incorporações pré-processadas para todas as bibliotecas padrão de Julia, DataFrames e PrompingTools. Graças ao incrível sistema de artefatos Julia, essas incorporações são baixadas/em cache/carregadas sempre que o pacote inicia.
Nota: As funções abaixo ainda não foram exportadas. Prefixo -os com AIHelpMe. para usá -los.
O AIHelpMe permite que os usuários aprimorem seus recursos incorporando a documentação de qualquer módulo Julia carregado. Utilize new_index = build_index(module) para criar um índice para um módulo específico (ou um vetor de módulos).
Para atualizar um índice existente, incluindo pacotes recentemente importados, use new index = update_index(module) ou simplesmente update_index() para incluir todos os módulos não reconhecidos. Adicionaremos e incorporaremos apenas a nova documentação para evitar duplicação e custo desnecessários.
Depois que um índice é construído ou atualizado, você pode optar por serializar -o para uso posterior ou configurá -lo como o índice primário.
Para usar seu índice recém -criado como a principal fonte de consultas, execute load_index!(new_index) . Como alternativa, carregue um índice pré-existente de um arquivo usando load_index!(file_path) .
O principal índice para consultas é mantido na variável global AIHelpMe.MAIN_INDEX .
Aihelpme aproveita o que solicita a comunicação com os modelos de IA.
Aplicamos um padrão de geração de aumento de recuperação (RAG), ou seja,
Isso garante que as respostas não sejam apenas baseadas no conhecimento geral da IA, mas também sejam especificamente adaptadas ao ecossistema e às melhores práticas de Julia.
Os "pacotes de conhecimento" são provenientes de sites de documentação e depois processados com docsscraper.jl.
Observação
Se você deseja configurar um processo automatizado para criar um novo pacote de conhecimento para algum pacote/organização, informe -nos!
P: É caro incorporar toda a minha documentação? R: Não, incorporar um conjunto abrangente de documentação é surpreendentemente econômico. A incorporação de cerca de 170 módulos, incluindo todas as bibliotecas padrão e muito mais, custa aproximadamente 8 centavos e leva menos de 30 segundos. Para economizar dinheiro, já incorporamos as bibliotecas Julia Standard e as disponibilizamos para download via artefatos. Esperamos que quaisquer extensões da Base de Conhecimento sejam no máximo alguns centavos (consulte estendendo a base de conhecimento).
P: Quanto custa fazer uma pergunta? R: Cada consulta incorre apenas uma fração de um centavo, dependendo do comprimento e do modelo escolhido.
P: Posso usar a Chave da API de teste Cohere para projetos comerciais? R: Não, uma chave de teste é apenas para fins de teste. Mas são necessários apenas alguns cliques para mudar para a API de produção. O custo é de apenas US $ 1 por 1000 pesquisas (!!!) e tem muitos outros benefícios.
P: Qual a precisão das respostas? R: Como qualquer outra resposta generativa da IA, ou seja, depende e você sempre deve verificar novamente.
P: Posso usá -lo sem a Internet? A: Não no momento. Pode ser possível no futuro, pois o PromptingTools.jl suporta LLMs locais.
P: Por que precisamos da chave da API coere? R: A API da Cohere é usada para reabastecer os melhores trechos correspondentes da documentação. É gratuito para usar em quantidades limitadas (ou seja, ~ mil solicitações por mês), o que deve ser suficiente para a maioria dos usuários. A renomação melhora a qualidade e a precisão das respostas.
P: Por que precisamos da chave da API Tavily? R: A API de Tavily é usada para pesquisar os melhores trechos correspondentes da documentação. É gratuito para usar em quantidades limitadas (ou seja, ~ mil solicitações por mês), o que deve ser suficiente para a maioria dos usuários. A pesquisa melhora a qualidade e a precisão das respostas.
P: Podemos usar modelos Ollama (hospedado localmente)? A: Sim, consulte a seção avançada nos documentos.
P: Como posso criar pacotes de conhecimento para meus pacotes? A: Confira o pacote docssscraper.jl. É o que usamos para criar os pacotes de conhecimento carregados neste pacote!
Aihelpme está evoluindo continuamente. As atualizações futuras podem incluir:
Observe que isso é apenas um pré -lançamento - ainda temos um longo caminho a percorrer ...