aia
는 AI 모델과의 상호 작용을 용이하게 하는 명령줄 유틸리티입니다. 사전 구성 프롬프트 관리를 자동화하고 최신 LLM의 증가된 컨텍스트 창 크기를 활용하여 해당 프롬프트에서 생성 AI(Gen-AI) 명령을 실행합니다.
mods
및 sgpt
CLI 유틸리티에 대한 프롬프트를 관리하기 위해 prompt_manager
보석을 활용합니다. 프롬프트 파일을 검색하기 위해 "ripgrep"을 사용합니다. 검색어와 퍼지 매칭을 기반으로 한 프롬프트 선택을 위해 fzf
사용합니다.
가장 최근 변경 사항 : 변경 로그를 참조하세요.
참고로 ... 저는 mods 및 llm과 같은 백엔드 LLM 프로세서에 대한 종속성을 삭제하기 위해
develop
분기에서 작업하고 있습니다. 저는 모든 모델과 모든 공급자에 대한 액세스를 제공하는 ai_client라는 자체 범용 클라이언트 gem을 사용하도록 aia를 리팩터링하고 있습니다.
aia
특정 지시문 명령llm
sgpt
plz
다음을 실행하여 gem을 설치합니다.
gem install aia
다음을 실행하여 명령줄 유틸리티를 설치합니다.
brew install mods fzf ripgrep
또한 프롬프트 텍스트 파일, 마지막으로 사용한 매개변수 및 사용 로그 파일이 보관되는 파일 시스템에 디렉터리를 설정해야 합니다.
프롬프트 디렉터리를 가리키는 "AIA_PROMPTS_DIR"이라는 시스템 환경 변수(envar)를 설정합니다. 기본값은 ".prompts"라는 HOME 디렉터리에 있습니다. envar "AIA_ROLES_DIR"은 LLM이 작업을 수행할 때 가정할 다양한 역할을 정의하는 프롬프트가 있는 역할 디렉터리를 가리킵니다. 기본 역할 디렉터리는 프롬프트 디렉터리 안에 있습니다. 그 이름은 "역할"입니다.
쉘에 대한 완성 스크립트를 설치할 수도 있습니다. 완료 스크립트의 사본을 얻으려면 다음을 수행하십시오.
aia --completion bash
fish
와 zsh
도 사용할 수 있습니다.
-h
또는 --help
사용하여 얻은 사용 보고서는 표준 man
페이지로 구현됩니다. -h -v
의 --help --verbose
함께 사용하면 aia
매뉴얼 페이지뿐만 아니라 backend
LLM 처리 도구의 사용 보고서도 얻을 수 있습니다.
$ aia --help
aia
구성 기본값은 접두사 "AIA_" 뒤에 구성 항목 이름도 대문자로 표시되는 시스템 환경 변수 (envars) 로 재정의될 수 있습니다. 모든 구성 항목은 이러한 방식으로 envar에 의해 재정의될 수 있습니다. 다음 표에서는 몇 가지 예를 보여줍니다.
구성 항목 | 기본값 | 엔바르 키 |
---|---|---|
백엔드 | 모드 | AIA_BACKEND |
구성_파일 | 무 | AIA_CONFIG_FILE |
디버그 | 거짓 | AIA_DEBUG |
편집하다 | 거짓 | AIA_EDIT |
추가의 | '' | AIA_EXTRA |
흐린 | 거짓 | AIA_FUZZY |
로그 파일 | ~/.prompts/_prompts.log | AIA_LOG_FILE |
가격 인하 | 진실 | AIA_MARKDOWN |
모델 | gpt-4-1106-미리보기 | AIA_MODEL |
out_file | 표준 출력 | AIA_OUT_FILE |
프롬프트_디렉터리 | ~/.프롬프트 | AIA_PROMPTS_DIR |
speech_model. | tts-1 | AIA_SPEECH_MODEL |
말 수가 많은 | 거짓 | AIA_VERBOSE |
목소리 | 합금 | AIA_VOICE |
전체 목록은 cli.rb
파일의 @options
해시를 참조하세요. envar 재정의로 사용하기에 적합하지 않은 일부 구성 항목이 있습니다. 예를 들어, export AIA_DUMP_FILE=config.yaml
설정하면 aia
현재 구성 config.yaml을 덤프하고 unset AIA_DUMP_FILE
때까지 실행될 때마다 종료합니다.
aia
에 대한 이러한 구성 항목 외에도 백엔드 프롬프트 처리 유틸리티(mods 및 sgpt)에 대한 선택적 명령줄 매개 변수는 "AIA_" 접두사가 있는 envar를 사용하여 설정할 수도 있습니다. 예를 들어 "export AIA_TOPP=1.0"은 백엔드 프로세서로 사용될 때 mods
유틸리티에 대한 "--topp 1.0" 명령줄 옵션을 설정합니다.
--shell
옵션을 사용하면 aia
프롬프트 텍스트 내부에서 터미널의 셸 환경에 액세스할 수 있습니다.
aia
프롬프트 텍스트의 모든 시스템 환경 변수(envar) 참조를 envar 값으로 바꿀 수 있습니다. 다음과 같은 패턴
패턴을 사용하여 동적 콘텐츠를 프롬프트에 삽입할 수 있습니다.
특정 운영 체제에 맞게 프롬프트를 맞춤화하는 기능을 고려하십시오.
As a system administration on a $(uname -v) platform what is the best way to [DO_SOMETHING]
또는 홈 디렉터리에 있는 파일의 콘텐츠를 삽입하세요.
Given the following constraints $(cat ~/3_laws_of_robotics.txt) determine the best way to instruct my roomba to clean my kids room.
--shell
옵션을 사용하여 채팅 세션을 시작하면 후속 프롬프트에서 셸 통합을 사용할 수 있습니다. 특정 클래스에 적용될 수 있는 변경 사항에 대해 채팅하기 위해 "Ruby Expert" 롤을 사용하여 채팅 세션을 시작했지만 시작할 때 클래스 소스 파일을 컨텍스트의 일부로 포함하는 것을 잊어버렸다고 가정해 보겠습니다. 계속 진행하려면 이에 대한 후속 프롬프트로 다음을 입력할 수 있습니다.
The class I want to chat about refactoring is this one: $(cat my_class.rb)
그러면 전체 클래스 소스 파일이 후속 프롬프트에 삽입됩니다. 수업 변경에 대해 AI 어시스턴트와 계속 채팅할 수 있습니다.
--shell
옵션이 제공하는 셸 통합을 통해 동적 콘텐츠를 포함하는 것이 중요합니다. aia
또한 프롬프트 텍스트 내에 내장된 Ruby 코드 처리의 모든 기능을 제공합니다.
--erb
옵션은 프롬프트 텍스트 파일을 완전히 작동하는 ERB 템플릿으로 변환합니다. Embedded Ruby(ERB) 템플릿 구문(2024)은 ERB의 구문과 기능에 대한 좋은 개요를 제공합니다.
ERB에 대한 정보가 있는 대부분의 웹사이트는 ERB를 사용하여 웹 기반 애플리케이션을 위한 동적 HTML 콘텐츠를 생성하는 방법에 대한 예를 제공합니다. 이는 ERB의 일반적인 사용 사례입니다. 반면 aia
ERB를 사용하여 동적 프롬프트 텍스트를 생성합니다.
--chat
옵션 또는 프롬프트 텍스트 파일 내의 지시문을 사용하여 이에 상응하는 옵션으로 시작한 채팅 세션에서는 바인딩 및 로컬 변수 할당에 따라 약간 다르게 동작합니다. 정의에 따라 채팅 세션에는 여러 개의 프롬프트가 있으므로 하나의 프롬프트에서 로컬 변수를 설정하고 후속 프롬프트에서 이를 사용할 수 있다고 기대하는 것은 작동하지 않습니다. 정보 전달을 프롬프트하는 이 프롬프트를 수행하려면 인스턴스 변수를 사용해야 합니다.
또한 후속 프롬프트는 단일 반환으로 끝나는 단일 항목(문장 또는 단락)으로 예상되므로 ERB 강화가 도움이 될 가능성이 높습니다. 그러나 당신은 그것의 용도를 찾을 수 있습니다.
다운스트림 처리 지시문은 버전 0.4.1에서 au
가 사용하는 prompt_manager
gem에 추가되었습니다. 이러한 지시문은 다음 패턴을 갖는 "//"로 시작하는 프롬프트 텍스트 파일의 행입니다.
//command parameters
"//"와 명령 사이에는 공백이 없습니다.
프롬프트 지시문을 프롬프트 매개변수 및 쉘 환경 대체와 결합하면 강력한 구성 프롬프트를 얻을 수 있습니다.
다음은 순수 일반 지시문의 예입니다.
//[DIRECTIVE_NAME] [DIRECTIVE_PARAMS]
프롬프트가 실행되면 각 매개변수에 대한 값을 제공하라는 메시지가 표시됩니다. PI에 대한 잘못된 근사값을 원할 경우 지시문 이름에 "shell"을 입력하고 "calc 22/7"로 응답할 수 있습니다.
다음 프롬프트 파일을 사용해 보세요.
//shell calc [FORMULA]
What does that number mean to you?
aia
특정 지시문 명령 현재 aia
아래에 자세히 설명된 몇 가지 지시문만 있습니다.
프롬프트 텍스트 파일 내의 //config
지시문은 프롬프트에 대한 특정 구성 환경을 조정하는 데 사용됩니다. 모든 구성 항목의 값을 변경할 수 있습니다. 구성 항목에 대한 값 할당 순서는 구성 파일의 값으로 대체되는 명령줄 옵션 값으로 대체되는 envar 값으로 대체되는 기본값으로 시작됩니다.
//config
는 특정 프롬프트에 대한 구성 항목의 값을 변경하는 마지막이자 마지막 방법입니다.
스위치 옵션은 부울처럼 처리됩니다. 이는 true
또는 false
입니다. //config
지시문의 컨텍스트 내 이름은 항상 "?"로 끝납니다. 문자 - 물음표.
``//config for example
--terse` 또는 `--chat`)를 사용하여 스위치 값을 설정하려면 다음을 수행하세요.
//config chat? = true
//config terse? = true
--out_file
또는 --model
과 같은 구성 항목에는 명령줄에 연결된 값이 있습니다. //config
지시어로 해당 값을 설정하려면 다음과 같이 하십시오:
//config model = gpt-3.5-turbo
//config out_file = temp.md
//config backend = mods
참고: "="는 완전히 옵션입니다. 할당 연산자로 선택한 경우 ":="이므로 실제로 무시됩니다. 또한 항목과 값 사이의 공백 수는 완전히 임의적입니다. 나는 이 구문이 유효하도록 일렬로 정렬하는 것을 좋아합니다.
//config model gpt-3.5-turbo
//config out_file temp.md
//config backend mods
//config chat? true
//config terse? true
//config model gpt-4
참고: 프롬프트 파일 내에서 동일한 구성 항목 이름을 두 번 이상 지정하는 경우 LLM을 통해 프롬프트가 최종적으로 처리될 때 마지막 항목 이름이 설정됩니다. 예를 들어 위의 예에서는 gpt-4
사용되는 모델입니다. 이 경우 첫 번째는 중요하지 않습니다.
예:
//include path_to_file
path_to_file
은 절대 또는 상대일 수 있습니다. 상대적인 경우 PWD에 고정됩니다. path_to_file
에 envar가 포함된 경우 --shell
CLI 옵션을 사용하여 지시문의 envar를 실제 값으로 바꿔야 합니다.
포함된 파일에는 주석이나 지시문이 제외됩니다. 파일의 내용이 기존 프롬프트 앞에 추가될 수 있도록 파일은 텍스트 파일일 것으로 예상됩니다. 그러나 파일이 소스 코드 파일(예: file.rb)인 경우 소스 코드는 포함되지만 "//"로 시작하는 주석 행이나 행은 제외됩니다.
TODO: 상대 파일이 올 위치를 지정하려면 --include_dir
명령줄 옵션을 추가하는 것을 고려하세요.
예:
//ruby any_code_that_returns_an_instance_of_String
이 지시문은 ERB에 추가됩니다. 이 시점에서 //ruby
지시문은 AIA::Directives#ruby
메서드 내에 있는 현재 바인딩에 의해 제한됩니다. 따라서 별로 활용될 가능성은 없습니다.
그러나 간단한 eval(code)
로 구현되었으므로 다음과 같이 사용할 가능성이 있습니다.
//ruby load(some_ruby_file); execute_some_method
//ruby
지시문을 실행할 때마다 AIA::Directives#ruby
메서드가 새로 실행되므로 한 호출에서 다른 호출로 지역 변수를 전달할 수 없습니다. 그러나 인스턴스 변수나 전역 변수를 사용하여 작업을 수행할 수 있습니다. 동일한 프롬프트의 컨텍스트 내에서 다음 지시문 호출에 붙여넣을 항목을 AIA.config
객체에 추가할 수도 있습니다.
예:
//shell some_shell_command
쉘 명령은 프롬프트 파일 내의 기존 프롬프트 텍스트 앞에 추가될 일부 텍스트를 STDOUT으로 반환할 것으로 예상됩니다.
쉘 명령이 무엇인지에 대한 제한은 없습니다. 예를 들어 파일에서 주석과 지시어 제거를 우회하려면 다음과 같이 할 수 있습니다.
//shell cat path_to_file
파일의 전체 내용을 사용한다는 점을 제외하면 기본적으로 //include
지시문과 동일한 작업을 수행합니다. 상대 파일 경로의 경우에도 동일한 내용이 적용됩니다. 파일 경로는 PWD를 기준으로 합니다.
현재 구성 기반인 백엔드에서 지원하는 지시어에 대한 소스 코드를 참조하세요.
예를 들어 mods
프롬프트 텍스트 파일의 지시어로 직접 설정할 수 있는 구성 항목 topp
있습니다.
//topp 1.5
mods
백엔드가 아닌 경우 //topp
지시어는 무시됩니다.
채팅 세션에 있는 동안 후속 프롬프트로 지시문을 사용할 수 있습니다. 예를 들어 백엔드에서 짧은 답변을 기대하면서 --terse
옵션을 사용하여 채팅 세션을 시작한 경우; 하지만 더 포괄적인 답변을 원한다고 결정하면 다음과 같이 할 수 있습니다.
//config terse? false
지시문이 실행되고 백엔드에서 생성된 더 긴 응답을 사용하여 새로운 후속 프롬프트를 입력할 수 있습니다.
배치 상황에서 일련의 프롬프트를 사용해야 하거나 사용하려는 이유는 무엇입니까? 입력을 위한 모델의 토큰 제한을 초과하는 복잡한 프롬프트가 있어서 이를 여러 부분으로 나누어야 할 수도 있습니다. 또는 단순한 프롬프트이지만 출력되는 토큰 수가 제한되어 있고 찾고 있던 완전한 응답을 정확히 얻지 못했다고 가정해 보겠습니다.
때로는 원하는 종류의 응답을 얻기 위해 일련의 프롬프트가 필요할 수도 있습니다. 한 프롬프트의 응답은 다음 프롬프트의 컨텍스트가 됩니다. 원하는 종류의 응답을 얻을 때까지 수동으로 프롬프트를 입력하고 조정하면 chat
세션 내에서 쉽게 수행할 수 있습니다.
정기적으로 또는 배치 내에서 이 작업을 수행해야 하는 경우 aia
와 --next
및 --pipeline
명령줄 옵션을 사용할 수 있습니다.
이 두 옵션은 처리할 프롬프트 ID의 순서를 지정합니다. 두 옵션 모두 //config
지시문을 사용하여 프롬프트 파일 내에서 사용할 수 있습니다. 모든 내장 지시문과 마찬가지로 매개변수화 셸 통합과 Ruby를 활용할 수 있습니다. 나는 TIm Tool man이 더 강력해진 것 같은 느낌이 들기 시작했습니다!
순서대로 처리해야 하는 프롬프트 ID가 4개 있는 조건을 생각해 보세요. ID 및 관련 프롬프트 파일 이름은 다음과 같습니다.
프롬프트 ID | 프롬프트 파일 |
---|---|
하나. | one.txt |
둘. | 2.txt |
삼. | 세.txt |
4개. | 4.txt |
export AIA_OUT_FILE=temp.md
aia one --next two
aia three --next four temp.md
또는 각 프롬프트 파일 내에서 config 지시문을 사용합니다.
one.txt contains //config next two
two.txt contains //config next three
three.txt contains //config next four
하지만 시퀀스에 프롬프트가 3개 이상 있으면 --pipeline 옵션 사용을 고려하세요.
지시문 //next는 //config next의 약어입니다.
aia one --pipeline two,three,four
또는 one.txt
프롬프트 파일 내에서 다음 지시어를 사용하세요.
//config pipeline two,three,four
//pipeline 지시문은 //config Pipeline의 약어입니다.
모든 프롬프트가 동일한 출력 파일에 응답을 기록하도록 하는 대신 한 프롬프트의 응답이 시퀀스 내의 다음 프롬프트에 제공되므로 관련 프롬프트 파일 내에서 다음 지시문을 사용하십시오.
프롬프트 파일 | 지령 |
---|---|
one.txt | //out_file one.md 구성 |
2.txt | //out_file two.md 구성 |
세.txt | //out_file three.md 구성 |
4.txt | //out_file four.md 구성 |
이렇게 하면 시퀀스의 각 프롬프트에 대해 생성된 응답을 볼 수 있습니다.
TODO: 오디오-텍스트 변환은 아직 개발 중입니다.
회의 오디오 파일이 있다고 가정해 보겠습니다. 그 회의에서 말한 내용을 전사적으로 받아볼 수 있습니다. 때로는 원시 전사가 녹음의 실제 가치를 숨기기 때문에 원시 전사를 취하고 작업 항목 목록이 포함된 기술 요약을 수행하는 프롬프트를 만들었습니다.
transcribe.txt 및 tech_summary.txt라는 두 개의 프롬프트를 만듭니다.
# transcribe.txt
# Desc: takes one audio file
# note that there is no "prompt" text only the directive
//config backend client
//config model whisper-1
//next tech_summary
그리고
# tech_summary.txt
//config model gpt-4-turbo
//config out_file meeting_summary.md
Review the raw transcript of a technical meeting,
summarize the discussion and
note any action items that were generated.
Format your response in markdown.
이제 다음을 수행할 수 있습니다.
aia transcribe my_tech_meeting.m4a
회의 요약은 meeting_summary.md
파일에 있습니다.
프롬프트에는 두 가지 종류가 있습니다.
두 번째 종류의 프롬프트를 역할이라고 합니다. 때로는 역할이 교육에 포함되기도 합니다. 예를 들어 "마법사가 모자에서 토끼를 나타나게 하세요." 여러 프롬프트에서 동일한 역할을 재사용하려면 aia
의인화에 특정한 프롬프트를 넣을 특수 roles_dir
지정하도록 권장합니다.
기본 roles_dir
역할이라는 prompts_dir
의 하위 디렉터리입니다. 그러나 귀하가 이해하기 쉬운 곳에 roles_dir
둘 수 있습니다.
--role
옵션은 LLM이 응답을 제공하는 컨텍스트를 정의하는 역할 디렉터리 내에서 개인화 프롬프트를 식별하는 데 사용됩니다. 백엔드에서 처리할 완전한 프롬프트를 형성하기 위해 역할 ID의 텍스트가 기본 프롬프트 텍스트 앞에 추가됩니다.
예를 들어 다음을 고려하십시오.
aia -r ruby refactor my_class.rb
역할 디렉터리 내에서 텍스트 파일 ruby.txt
의 내용은 전체 프롬프트를 생성하기 위해 프롬프트 디렉터리의 refactor.txt
파일 내용에 미리 추가됩니다. 해당 전체 프롬프트에는 결합된 프롬프트 텍스트를 백엔드로 보내기 전에 처리된 지시문이 뒤따르는 모든 매개변수가 있습니다.
--role
이 프롬프트 텍스트 파일을 다른 프롬프트 텍스트 파일 앞에 추가하라는 의미일 뿐입니다. "역할" 프롬프트의 내용은 무엇이든 될 수 있습니다. 반드시 실제 역할일 필요는 없습니다.
aia
다양한 프롬프트 텍스트 파일의 구성 또는 분류 방법으로 prompts_dir
내의 디렉토리 트리를 완벽하게 지원합니다.
aia -r sw_eng doc_the_methods my_class.rb
이 예에서는 프롬프트 텍스트 파일 $AIA_ROLES_DIR/sw_eng.txt
프롬프트 텍스트 파일 $AIA_PROMPTS_DIR/doc_the_methods.txt
앞에 추가됩니다.
aia
매개변수화된 프롬프트를 지원하므로 "[ROLE]"과 같은 키워드를 프롬프트의 일부로 만들 수 있습니다. 예를 들어 다음 프롬프트를 고려해보세요.
As a [ROLE] tell me what you think about [SUBJECT]
이 프롬프트가 처리되면 aia
프롬프트를 완성하기 위해 키워드 "ROLE" 및 키워드 "SUBJECT"에 대한 값을 요청합니다. aia
귀하의 이전 답변 기록을 유지하므로 이전에 사용했던 것을 선택하거나 완전히 새로운 값으로 답변할 수 있습니다.
aia에서 사용하는 외부 CLI 프로그램을 설치하려면:
양조 설치 fzf 모드 rg 글로우
fzf Go로 작성된 명령줄 퍼지 파인더 https://github.com/junegunn/fzf
명령줄의 mods AI https://github.com/charmbracelet/mods
grep 및 The Silver Searcher와 같은 rg 검색 도구 https://github.com/BurntSushi/ripgrep
CLI에서 렌더 마크다운 https://github.com/charmbracelet/glow
실행 파일이 시스템 환경 변수 'EDITOR'에 다음과 같이 설정된 텍스트 편집기:
내보내기 EDITOR="subl -w"
llm
llm Access large language models from the command-line
| brew install llm
|__ https://llm.datasette.io/
aia v0.5.13
부터 llm
백엔드 프로세서는 제한된 통합으로 사용할 수 있습니다. 이는 자체 프롬프트 템플릿 시스템을 갖춘 매우 강력한 Python 기반 구현입니다. aia
환경에 포함된 이유는 로컬 LLM 모델을 활용할 수 있기 때문입니다.
sgpt
shell-gpt
( sgpt
라고도 함)는 OpenAI를 통해 프롬프트를 처리하는 CLI 도구의 Python 구현이기도 합니다. mods
와 llm
보다 기능이 적고 유연성도 떨어집니다.
plz
plz-cli
(일명 plz
aia
와 통합되어 있지 않지만 명령줄에서 작업을 수행하도록 맞춤화된 프롬프트를 제외하는 기능으로 좋은 평가를 받았습니다. 해당 응답은 프롬프트에 설정된 작업을 수행하는 CLI 명령(때때로 파이프 시퀀스)입니다. 명령을 실행하기 위해 쿼리로 지정한 데이터 파일에 대해 실행할 명령을 반환합니다.
prompts_dir
에 저장된 프롬프트_id에서 완료되는 완료 기능을 쉘에서 설정할 수 있습니다. bash
, fish
및 zsh
에 대한 기능을 사용할 수 있습니다. 이러한 함수의 복사본을 얻으려면 다음을 수행하십시오.
aia --completion bash
"다시 태어나다"의 팬이 아니라면 bash
다른 것으로 교체하세요.
셸 인스턴스에서 함수를 설치할 수 있는 위치에 함수를 복사합니다. 이는 .profile
또는 .bashrc
파일 등일 수 있습니다.
이것은 단지 당신과 나 사이의 문제이므로 모든 사람에게 이 문제를 떠들썩하게 하지 마십시오. 가장 강력한 프롬프트는 ad_hoc.txt
라는 파일에 있습니다. 다음과 같습니다:
[지금 인간은 무엇인가]
네. 당시 내 생각에 있는 모든 값을 제공할 수 있는 단일 매개변수입니다. 장점은 쉘의 명령 기록을 많은 텍스트로 오염시키지 않는다는 것입니다.
쉘의 히스토리 파일에 어느 것이 더 좋다고 생각하십니까?
mods " As a certified public accountant specializing in forensic audit and analysis of public company financial statements, what do you think of mine? What is the best way to hide the millions dracma that I've skimmed? " < financial_statement.txt
또는
aia ad_hoc financial_statement.txt
둘 다 같은 일을 합니다. 그러나 aia
프롬프트의 텍스트를 쉘의 기록 파일에 넣지 않습니다.... 물론 키워드/매개변수 값은 프롬프트의 JSON 파일에 저장되며 --no-log
지정되지 않는 한 응답과 함께 프롬프트가 기록됩니다. ; 하지만 쉘 기록을 망치지는 않습니다!
저는 bash
쉘을 사용합니다. 내 .bashrc
파일에서 다음과 같은 .bashrc__aia
라는 다른 파일을 소스로 사용합니다.
# ~/.bashic_aia
# AI Assistant
# These are the defaults:
export AIA_PROMPTS_DIR= ~ /.prompts
export AIA_OUT_FILE=./temp.md
export AIA_LOG_FILE= $AIA_PROMPTS_DIR /_prompts.log
export AIA_BACKEND=mods
export AIA_MODEL=gpt-4-1106-preview
# Not a default. Invokes spinner.
export AIA_VERBOSE=true
alias chat= ' aia chat --terse '
# rest of the file is the completion function
내 chat
프롬프트 파일은 다음과 같습니다.
# ~/.prompts/chat.txt
# Desc: Start a chat session
//config chat ? = true
[WHAT]
이 CLI 도구는 내 스크립트 저장소의 파일에 몇 줄의 Ruby로 시작되었습니다. 더 많은 기능과 백엔드 도구를 추가하기로 결정하면서 계속해서 성장하고 있습니다. 디자인을 안내할 실제 아키텍처가 없었습니다. 남은 것은 더 유지 관리하기 쉬운 것으로 천천히 리팩토링되고 있는 대규모 코드 엉망입니다. 해당 작업은 develop
지점에서 진행됩니다. 도움이 되셨다면 환영합니다. 해당 지점에서 무슨 일이 일어나고 있는지 살펴보고 그에 대한 PR을 보내주세요.
물론, 메인 브랜치에서 뭔가를 발견하면 우리가 모두 문제를 해결할 수 있도록 그에 대한 PR을 보내주세요.
버그 보고서 및 끌어오기 요청은 GitHub(https://github.com/MadBomber/aia)에서 환영합니다.
aia
에서 문제를 발견하면 이를 문제로 기록해 두십시오. 이 글은 대부분 사람이 쓴 것입니다. 여러분은 사람이 얼마나 오류를 범하기 쉬운지 알고 있습니다. 찾을 수 있는 오류가 많이 있어야 합니다.
외부 명령에 대한 일부 명령줄 옵션이 하드 코딩된 방식이 마음에 들지 않습니다. 나는 rg
및 fzf
도구가 사용되는 방식에 대해 구체적으로 이야기하고 있습니다. 명령줄 검색 기능의 기본 모양과 느낌을 결정하는 옵션이 있습니다. 사용자가 원하는 방식으로 UI를 조정할 수 있도록 전체 구성의 일부가 되어야 할 수도 있습니다.
이 gem은 MIT 라이선스 조건에 따라 오픈 소스로 제공됩니다.