Aihelpme aprovecha el poder de la extensa documentación de Julia y los modelos AI avanzados para proporcionar una guía de codificación personalizada. Al integrarse con PromplingTools.jl, ofrece un enfoque único y asistido por AI-AI para responder a sus consultas de codificación directamente en el entorno de Julia.
Precaución
¡Esto es solo un prototipo! Todavía no lo hemos sintonizado, por lo que su kilometraje puede variar! ¡Siempre revise sus resultados de LLM!
Para instalar AihelpMe, use el Administrador de paquetes Julia y el nombre del paquete:
using Pkg
Pkg . add ( " AIHelpMe " )Prerrequisitos:
¡Toda la configuración debe tomar 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 predeterminado, solo cargamos la documentación y las documentos de Julia para las bibliotecas estándar. El modelo predeterminado utilizado es GPT-4 Turbo.
Puede imprimir bastante la respuesta usando pprint si devuelve el 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: Puede ver el modelo engañado porque puede ver esta misma documentación ...
aihelp macro :
aihelp " how to implement quicksort in Julia? "Preguntas de seguimiento :
aihelp! " Can you elaborate on the `sort` function? " NOTA: ¡ ! se requiere para preguntas de seguimiento. aihelp! No agrega un nuevo contexto/más información; para hacerlo, debe hacer una nueva pregunta.
Elija modelos más rápidos : por ejemplo, para preguntas simples, GPT 3.5 podría ser suficiente, así que use el 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!
Depuración : ¿Cómo se te ocurrió esa respuesta? Verifique el "contexto" proporcionado al modelo AI (es decir, los fragmentos de documentación que se usaron para generar la respuesta):
AIHelpMe . pprint (AIHelpMe . last_result ())
# Output: Pretty-printed Question + Context + Answer with color highlightsLos aspectos más destacados del color le muestran qué palabras no fueron respaldadas por el contexto provisto (magenta = completamente nuevo, azul = parcialmente nuevo). Es una forma bastante e intuitiva de ver qué nombres o variables de funciones están formadas versus cuáles estaban en el contexto.
Puede cambiar los kwargs de pprint para ocultar las anotaciones o potencialmente incluso mostrar el contexto subyacente (fragmentos de la documentación):
AIHelpMe . pprint (AIHelpMe . last_result (); add_context = true , add_scores = false )Consejo
Sus resultados mejorarán significativamente si habilita el reanimiento del contexto que se proporcionará al modelo (por ejemplo, aihelp(..., rerank=true) ) o cambia la tubería a update_pipeline!(:silver) . Requiere la configuración de la tecla API Cohere, pero es gratuita para uso de la comunidad.
Consejo
¿Desea ejecutar con seguridad el código generado? Use AICode de PromptingTools.Experimental.AgentToolsAI. . Puede ejecutar el código en un módulo de scratch y errores de captura si ocurren (por ejemplo, aplicar directamente a la respuesta AIMessage como AICode(msg) ).
¿Notó algunas respuestas extrañas? ¡Por favor háganoslo saber! ¡Consulte la sección "Ayúdanos a mejorar y depurar" en la sección avanzada de los documentos!
Preguntas de formulación :
Consultas de ejemplo :
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.")
El paquete se envía de forma predeterminada con incrustaciones preprocesadas para todas las bibliotecas estándar de Julia, marcos de datos y pistas de solicitación. Gracias al increíble sistema de artefactos de Julia, estas integridades se descargan/almacenan en caché/cargan cada vez que comienza el paquete.
Nota: Las funciones a continuación aún no se exportan. Prefijarlos con AIHelpMe. para usarlos.
AihelpMe permite a los usuarios mejorar sus capacidades integrando la documentación de cualquier módulo Julia cargado. Utilice new_index = build_index(module) para crear un índice para un módulo específico (o un vector de módulos).
Para actualizar un índice existente, que incluye paquetes recién importados, use new index = update_index(module) o simplemente update_index() para incluir todos los módulos no reconocidos. Agregaremos e incrustaremos solo la nueva documentación para evitar la duplicación y el costo innecesarios.
Una vez que se crea o actualiza un índice, puede optar por serializarlo para su uso posterior o configurarlo como el índice principal.
Para usar su índice recién creado como la principal fuente de consultas, ejecute load_index!(new_index) . Alternativamente, cargue un índice preexistente de un archivo usando load_index!(file_path) .
El índice principal para consultas se mantiene en la variable global AIHelpMe.MAIN_INDEX .
AIHelpMe aprovecha la que solicitan a los modelos AI.
Aplicamos un patrón de generación de aumento (trapo) de recuperación, es decir,
Esto asegura que las respuestas no solo se basen en el conocimiento general de la IA, sino que también se adapten específicamente al ecosistema y las mejores prácticas de Julia.
Los "paquetes de conocimiento" se obtienen de los sitios de documentación y luego se procesan con DocsScraper.jl.
Nota
Si desea configurar un proceso automatizado para crear un nuevo paquete de conocimiento para algún paquete/organización, ¡háganoslo saber!
P: ¿Es costoso incrustar toda mi documentación? R: No, incrustar un conjunto integral de documentación es sorprendentemente rentable. Incrustar alrededor de 170 módulos, incluidas todas las bibliotecas estándar y más, cuesta aproximadamente 8 centavos y toma menos de 30 segundos. Para ahorrarle dinero, ya hemos incrustado las bibliotecas estándar de Julia y las hemos puesto a disposición para descargar a través de artefactos. Esperamos que otras extensiones de base de conocimiento sean como máximo unos pocos centavos (ver extendiendo la base de conocimiento).
P: ¿Cuánto cuesta hacer una pregunta? R: Cada consulta incurre solo en una fracción de un centavo, dependiendo de la longitud y el modelo elegido.
P: ¿Puedo usar la clave de API de prueba Cohere para proyectos comerciales? R: No, una clave de prueba es solo para fines de prueba. Pero solo se necesitan unos pocos clics para cambiar a la API de producción. El costo es de solo $ 1 por 1000 búsquedas (!!!) y tiene muchos otros beneficios.
P: ¿Qué tan precisas son las respuestas? R: Como cualquier otra respuesta generativa de IA, es decir, depende y siempre debe verificar.
P: ¿Puedo usarlo sin Internet? A: No en este momento. Puede ser posible en el futuro, ya que provocatingtools.jl admite LLM locales.
P: ¿Por qué necesitamos la tecla API Cohere? R: La API de Cohere se usa para volver a clasificar los mejores fragmentos coincidentes de la documentación. Es de uso gratuito en cantidades limitadas (es decir, ~ mil solicitudes por mes), lo que debería ser suficiente para la mayoría de los usuarios. El volver a clasificar mejora la calidad y la precisión de las respuestas.
P: ¿Por qué necesitamos Tavily API Key? R: La API de Tavily se usa para buscar los mejores fragmentos coincidentes de la documentación. Es de uso gratuito en cantidades limitadas (es decir, ~ mil solicitudes por mes), lo que debería ser suficiente para la mayoría de los usuarios. La búsqueda mejora la calidad y la precisión de las respuestas.
P: ¿Podemos usar modelos Ollama (alojados localmente)? R: Sí, vea la sección avanzada en los documentos.
P: ¿Cómo puedo crear paquetes de conocimiento para mis paquetes? R: Consulte el paquete DocsScraper.jl. ¡Es lo que usamos para construir los paquetes de conocimiento cargados en este paquete!
Aihelpme está evolucionando continuamente. Las actualizaciones futuras pueden incluir:
Tenga en cuenta que esto es simplemente un prelanzamiento: todavía tenemos un largo camino por recorrer ...