อินเทอร์เฟซบรรทัดคำสั่ง ellA

ฟีเจอร์

  • ถามคำถามกับ LLMs จากเทอร์มินัล
  • เป็นมิตรกับการใช้ผ่าน pipe
  • ส่งต่อบริบทของเทอร์มินัลให้ LLMs และตั้งคำถาม
  • แชตกับ LLMs จากเทอร์มินัล
  • รองรับความสามารถเพิ่มเติมผ่านการเรียกใช้ฟังก์ชันและเทมเพลต

ข้อกำหนด

  • bash
  • jq (สำหรับพาร์ส JSON)
  • curl (สำหรับส่งคำขอ HTTPS)
  • perl (สำหรับ PCRE เนื่องจาก POSIX bash ไม่รองรับ regular expression แบบ look-ahead และ look-behind ไม่จำเป็นหากไม่ใช้โหมดบันทึก)

การติดตั้ง

git clone --depth 1 https://github.com/simonmysun/ell.git ~/.ellrc.d
echo 'export PATH="${HOME}/.ellrc.d:${PATH}"' >> ~/.bashrc

หรือ

git clone --depth 1 git@github.com:simonmysun/ell.git ~/.ellrc.d
echo 'export PATH="${HOME}/.ellrc.d:${PATH}"' >> ~/.bashrc

คำสั่งนี้จะโคลนรีโพซิทอรีไปยังไดเรกทอรี .ellrc.d และเพิ่มเข้าไปใน PATH

การตั้งค่า

ตัวอย่างการตั้งค่าสำหรับการใช้ gemini-1.5-flash ของ Google:

ELL_API_STYLE=gemini
ELL_LLM_MODEL=gemini-1.5-flash
ELL_TEMPLATE=default-gemini
ELL_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ELL_API_URL=https://generativelanguage.googleapis.com/v1beta/models/

ตัวอย่างการตั้งค่าสำหรับการใช้ gpt-4o-mini ของ OpenAI:

ELL_API_STYLE=openai
ELL_LLM_MODEL=gpt-4o-mini
ELL_TEMPLATE=default-openai
ELL_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ELL_API_URL=https://api.openai.com/v1/chat/completions

ตัวอย่างการใช้งาน

  • ถามคำถาม:
ell "What is the capital of France?"
  • ระบุโมเดลและใช้ไฟล์อินพุต:
ell -m gpt-4o -f user_prompt.txt
  • อ่านจาก stdin:
cat somecode.py | ell -f -
  • เพิ่มพรอมป์ต์เพิ่มเติมแบบทันที:
(cat somecode.py; echo "Explain this code") | ell -f -
  • บันทึกอินพุตและเอาต์พุตของเทอร์มินัลแล้วใช้เป็นบริบท:
ell -r
# do random stuff
ell What does the error code mean?
ell How to fix it?
  • รันในโหมดโต้ตอบ:
ell -i
  • ใช้โหมดบันทึกร่วมกับโหมดโต้ตอบ:
ell -r -i
  • ระบุเทมเพลตและเริ่มโหมดบันทึกร่วมกับโหมดโต้ตอบ:
ell -r -i -t ctf-gemini
หรือ
ell -r -i -t ctf-openai

การเขียนเทมเพลต

ดูรายละเอียดเพิ่มเติมเกี่ยวกับการใช้เทมเพลตได้ที่ Templates

การจัดสไตล์

ดูรายละเอียดเพิ่มเติมเกี่ยวกับการจัดสไตล์ได้ที่ Styling

ปลั๊กอิน

ปลั๊กอินหมายถึงสคริปต์ที่สามารถเรียกใช้ได้จาก ell ไม่รวมปลั๊กอินของผู้ให้บริการ LLM ดูรายละเอียดเพิ่มเติมได้ที่ Templates

ความเสี่ยงที่ควรพิจารณา

ดู Risks Consideration

FAQ

  • Q: ทำไมถึงเรียกว่า "ell"?
    • A: "ell" เป็นการผสมระหว่าง shell และ LLM ใช้ LLM backend ผ่าน shell script โดยเคยพิจารณาชื่อ "shellm" มาก่อน แต่เพราะอาจทำให้เข้าใจผิดจึงเปลี่ยนเป็น "ell" ชื่อนี้สั้นและจำง่าย
  • Q: ทำไมถึงเขียนด้วย Bash?
    • A: Bash เป็นเชลล์ที่ใช้กันแพร่หลายที่สุดบนระบบแบบ Unix-like และไม่มีความจำเป็นต้องใช้ภาษาที่ซับซ้อนกว่านี้
  • Q: ell แตกต่างจากโปรเจกต์ลักษณะคล้ายกันอื่น ๆ อย่างไร?
    • A: ell เขียนด้วย Bash เกือบล้วน ๆ จึงมีน้ำหนักเบามากและติดตั้งง่าย ขยายและแก้ไขได้ง่ายมาก และเป็นมิตรกับการใช้ผ่าน pipe

โปรเจกต์ที่คล้ายกัน

  • chatgpt-cli: ChatGPT CLI ที่เขียนด้วย Go
  • gpt-cli: CLI สำหรับ LLM backend หลากหลายแบบที่เขียนด้วย Python
  • gptcli: CLI สำหรับ OpenAI LLM ที่เขียนด้วย TypeScript
  • x-cmd: ชุดเครื่องมือหลากหลายที่เขียนด้วย POSIX bash และ awk
  • gpt-bash-cli: CLI สำหรับ OpenAI API ที่บันทึกคำขอและคำตอบลงฐานข้อมูล
  • mods: เครื่องมือ CLI สำหรับคุยกับ LLM ที่เขียนด้วย Go
  • nicechat: อินเทอร์เฟซแชต CLI สำหรับโมเดล OpenAI ที่เขียนด้วย Node.js
  • autocomplete-sh: CLI สำหรับ LLM ที่เขียนด้วย bash
  • plandex: เครื่องมือ CLI สำหรับพัฒนาเวิร์กโฟลว์แบบผสาน AI ที่เขียนด้วย Go
  • llm: เครื่องมือ CLI สำหรับจัดการ LLM เชิงลึกที่เขียนด้วย Python
  • aichat: เครื่องมือ CLI สำหรับคุยกับผู้ให้บริการ LLM หลายรายที่เขียนด้วย Rust

การมีส่วนร่วม

ยินดีรับการมีส่วนร่วมเสมอ! หากมีไอเดีย ข้อเสนอแนะ หรือรายงานบั๊ก สามารถเปิด issue หรือส่ง pull request ได้

ไลเซนส์

โปรเจกต์นี้อยู่ภายใต้ MIT License ดูรายละเอียดเพิ่มเติมได้ที่ไฟล์ LICENSE

สรุปโดย GN⁺

  • ell เป็นอินเทอร์เฟซบรรทัดคำสั่งสำหรับ LLM ที่เขียนด้วย Bash มีน้ำหนักเบาและติดตั้งง่าย
  • รองรับการผสานรวมกับโมเดล LLM หลากหลายแบบ และเป็นมิตรกับการใช้ผ่าน pipe
  • สามารถใช้โหมดบันทึกร่วมกับโหมดโต้ตอบเพื่อใช้ประโยชน์จากบริบทในเทอร์มินัลได้
  • โปรเจกต์ที่คล้ายกันมีทั้ง chatgpt-cli, gpt-cli, gptcli เป็นต้น ซึ่งเขียนด้วยภาษาที่แตกต่างกัน

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น