Aihelpme은 Julia의 광범위한 문서 및 고급 AI 모델의 힘을 활용하여 맞춤형 코딩 안내를 제공합니다. romptingtools.jl과 통합하여 Julia의 환경에서 직접 코딩 쿼리에 답변하는 독특한 AI 지원 접근 방식을 제공합니다.
주의
이것은 단지 프로토 타입입니다! 우리는 아직 조정하지 않았으므로 마일리지가 다를 수 있습니다! 항상 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 문서와 Docstring 만로드합니다. 사용 된 기본 모델은 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 키를 설정해야하지만 커뮤니티 사용에는 무료입니다.
팁
생성 된 코드를 안전하게 실행 하시겠습니까? remptingtools.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.")
기본적으로 패키지는 모든 Julia 표준 라이브러리, 데이터 프레임 및 프롬프트 툴에 대한 사전 처리 된 임베드를 제공합니다. 놀라운 Julia Artifacts 시스템 덕분에 이러한 임베드는 패키지가 시작될 때마다 다운로드/캐시/로드됩니다.
참고 : 아래 함수는 아직 내보내지 않았습니다. AIHelpMe. 그것들을 사용합니다.
AIHELPME를 사용하면로드 된 Julia 모듈에 문서를 포함하여 사용자가 기능을 향상시킬 수 있습니다. new_index = build_index(module) 사용하여 특정 모듈 (또는 모듈 벡터)에 대한 인덱스를 만듭니다.
새로 가져온 패키지를 포함하여 기존 인덱스를 업데이트하려면 new index = update_index(module) 또는 Simply update_index() 사용하여 인식되지 않은 모든 모듈을 포함하십시오. 불필요한 복제 및 비용을 피하기 위해 새로운 문서 만 추가하고 포함 할 것입니다.
인덱스가 구축되거나 업데이트되면 나중에 사용하기 위해 직렬화하거나 기본 색인으로 설정하도록 선택할 수 있습니다.
새로 생성 된 색인을 쿼리의 기본 소스로 사용하려면 load_index!(new_index) 를 실행하십시오. 또는 load_index!(file_path) 사용하여 파일에서 기존 인덱스를로드하십시오.
쿼리의 기본 색인은 글로벌 변수 AIHelpMe.MAIN_INDEX 에서 유지됩니다.
AIHELPME는 AI 모델과 통신하기 위해 romptingtools.jl을 활용합니다.
우리는 검색 증강 생성 (RAG) 패턴을 적용합니다.
이를 통해 답변은 일반적인 AI 지식을 기반으로 할뿐만 아니라 Julia의 생태계 및 모범 사례에 맞게 조정됩니다.
"지식 팩"은 문서 사이트에서 공급 된 다음 Docsscraper.jl로 처리됩니다.
메모
일부 패키지/조직을위한 새로운 지식 팩을 만들기 위해 자동화 된 프로세스를 설정하려면 알려주십시오!
Q : 내 문서를 모두 포함시키는 것이 비용이 많이 드나요? A : 아니요, 포괄적 인 문서 세트를 포함시키는 것은 놀랍게도 비용 효율적입니다. 모든 표준 라이브러리 등을 포함하여 약 170 개의 모듈을 포함시키는 비용은 약 8 센트이며 30 초 미만입니다. 돈을 절약하기 위해 이미 Julia 표준 라이브러리를 내장하고 아티팩트를 통해 다운로드 할 수 있도록했습니다. 우리는 추가 지식 기반 확장이 최대 몇 센트 여야한다고 기대합니다 (지식 기반 확장 참조).
Q : 질문을하는 데 드는 비용은 얼마입니까? A : 각 쿼리는 길이와 선택된 모델에 따라 1 센트의 일부만 발생합니다.
Q : 상업 프로젝트에 Cohere Trial API 키를 사용할 수 있습니까? A : 아니요, 시험 키는 테스트 목적으로 만 사용됩니다. 그러나 생산 API로 전환하는 데는 몇 번의 클릭 만 필요합니다. 비용은 1000 개의 검색 당 $ 1이며 (!!!) 많은 다른 혜택이 있습니다.
Q : 답변은 얼마나 정확합니까? A : 다른 생성 AI 답변과 마찬가지로, 즉, 항상 의존하며 항상 다시 확인해야합니다.
Q : 인터넷없이 사용할 수 있습니까? A : 지금은 아닙니다. PromptingTools.jl이 로컬 LLM을 지원하기 때문에 앞으로는 가능할 수 있습니다.
Q : Cohere API 키가 필요한 이유는 무엇입니까? A : Cohere의 API는 문서에서 가장 잘 일치하는 스 니펫을 재 선고하는 데 사용됩니다. 제한된 수량 (즉, 한 달에 ~ 천명의 요청)으로 자유롭게 사용할 수 있으며 대부분의 사용자에게 충분해야합니다. 다시 랭킹은 답변의 품질과 정확성을 향상시킵니다.
Q : 왜 Tavily API 키가 필요합니까? A : Tavily의 API는 문서에서 가장 일치하는 스 니펫을 검색하는 데 사용됩니다. 제한된 수량 (즉, 한 달에 ~ 천명의 요청)으로 자유롭게 사용할 수 있으며 대부분의 사용자에게 충분합니다. 검색하면 답의 품질과 정확성이 향상됩니다.
Q : Ollama (현지 호스팅) 모델을 사용할 수 있습니까? A : 그렇습니다. 문서의 고급 섹션을 참조하십시오.
Q : 패키지에 대한 지식 팩을 어떻게 만들 수 있습니까? A : 패키지 DocsScraper.jl을 확인하십시오. 이 패키지에로드 된 지식 팩을 구축하는 데 사용하는 것입니다!
Aihelpme는 지속적으로 진화하고 있습니다. 향후 업데이트에는 다음이 포함될 수 있습니다.
이것은 단지 프리 릴리스 일뿐입니다. 우리는 여전히 갈 길이 멀다 ...