เพลิดเพลินกับ ChatGPT ในเทอร์มินัลของคุณ 中文
A guru is a teacher or mentor who is highly respected and knowledgeable in
their field. The term is often associated with spiritual or religious
leaders, but can also refer to experts in other areas such as business,
technology, or health. -- generated by ChatGPT
--oneshot
เพื่อเข้าสู่โหมด oneshot ซึ่งจะปล่อยข้อความบริบทสำหรับแต่ละคำขอ เริ่ม guru
ด้วย --last
เพื่อสนทนาต่อในบทสนทนาสุดท้าย go install github.com/shafreeck/guru@latest
Guru ใช้ API แบบเปิดของ OpenAI เพื่อสื่อสารกับ ChatGPT รับคีย์ API ที่เกี่ยวข้องโดยเข้าสู่ระบบบัญชีของคุณในฐานะนักพัฒนา
https://platform.openai.com/account/api-keys
กำหนดค่า guru เป็นครั้งแรกโดยใช้ เรียกใช้ guru config
และป้อนคีย์ OpenAI API ที่ได้รับจากขั้นตอนข้างต้น พร็อกซี Socks5 เป็นทางเลือกที่จะใช้ คุณสามารถข้ามขั้นตอนนี้และใช้พารามิเตอร์สำหรับคำสั่งได้โดยตรง แต่ขอแนะนำให้บันทึกคีย์ลับของคุณลงในไฟล์การกำหนดค่า
> guru [text]
เข้าสู่โหมดการสนทนาโดยเรียกใช้ guru
โดยตรง guru
จริงๆ แล้วเป็นนามแฝงของคำสั่ง guru chat
เรียกใช้กูรูด้วยแฟล็ก --oneshot
เพื่อเข้าสู่โหมด oneshot
ในโหมดนี้ กูรูจะทิ้งข้อความบริบทสำหรับการถามแต่ละครั้ง เซสชันจะถูกบันทึกโดยอัตโนมัติเสมอ (ค่าเริ่มต้นในไดเร็กทอรี ~/.guru/session/
)
> guru cheat
guru cheat
เป็นนามแฝงของคำสั่ง guru chat -p Cheatsheet
ซึ่งใช้เพื่อทำให้การป้อนข้อมูลของผู้ใช้ง่ายขึ้น
> git diff | guru commit
guru commit
เป็นนามแฝงของ guru chat -p Committer
ใช้พารามิเตอร์ --oneshot
เพื่อเข้าสู่โหมดการสนทนาแบบ one-shot ในโหมดนี้ ข้อความบริบทจะถูกละทิ้งโดยอัตโนมัติ อย่างไรก็ตาม หาก --prompt, -p
ระบุพร้อมท์ เนื้อหาของพร้อมท์จะถูกปักหมุดและส่งไปพร้อมกับคำขอแต่ละรายการ
ใช้คำสั่ง
: message pin
เพื่อปักหมุดข้อความใดๆ
guru --oneshot
echo list files in this dir in detail | guru cheat | sh
ChatGPT จะไม่จัดเก็บบริบทของการสนทนาทางฝั่งเซิร์ฟเวอร์ ความสามารถในการรับรู้บริบททำได้โดยการส่งเนื้อหาบริบททั้งหมดจากไคลเอนต์ ตามที่กำหนดไว้ใน OpenAI API ทั้งคำถามที่ส่งหรือคำตอบที่ตอบกลับจะเรียกว่าข้อความ เนื้อหาของข้อความจะถูกแปลงเป็นโทเค็น และมีการจำกัดจำนวนโทเค็นทั้งหมดสำหรับทั้งการส่งและตอบกลับ ซึ่งสูงสุดคือ 4096 การสนทนาที่ยาวนานจะทำให้โทเค็นหมด
Guru รองรับการล้างข้อความเก่าโดยอัตโนมัติเพื่อให้เกิดการสนทนาอย่างต่อเนื่องในหน้าต่างแบบเลื่อน อย่างไรก็ตาม บางครั้งเราคาดหวังการควบคุมข้อความที่ส่งไปยัง ChatGPT ได้แม่นยำยิ่งขึ้น ในขณะนี้ คำสั่งภายในจากการจัดการข้อความสามารถใช้เพื่อย่อ ลบ หรือต่อท้ายข้อความด้วยตนเองได้
สำหรับข้อความที่เราไม่ต้องการลบหรือไม่ต้องการถูกล้างโดยหน้าต่างกลิ้ง เราสามารถปักหมุดข้อความด้วยคำสั่ง : message pin
โหมด oneshot ใช้วิธีการนี้เพื่อปักหมุดข้อความพร้อมท์ ซึ่งจะทำให้ข้อความพร้อมท์ถูกส่งสำหรับคำถามแต่ละข้อ
: message list
แสดงข้อความปัจจุบันทั้งหมด นามแฝง :ls
: message delete [id...]
ลบข้อความ โดยพารามิเตอร์คือรหัสข้อความที่สามารถลบข้อความหลายข้อความพร้อมกันได้: message shrink [expr]
ย่อข้อความ โดยที่ expr
คือนิพจน์ช่วง ซึ่งจะเหมือนกับนิพจน์ใน Golang Slice: begin:end
คุณสามารถละเว้น Begin หรือ End ได้ เช่น 5:
ซึ่งหมายถึงการเก็บรักษาข้อความทั้งหมดที่มี ID มากกว่าหรือเท่ากับ 5message show [id]
แสดงข้อความบางอย่างและแสดงผลด้วย Markdown ค่าเริ่มต้นคือการแสดงข้อความสุดท้ายmessage append
ผนวกข้อความ ซึ่งสามารถใช้ได้กับทางลัด :append
message pin [id]
ปักหมุดข้อความ และข้อความที่ปักหมุดจะไม่ถูกลบโดยอัตโนมัติโดยกลไกการย่อขนาดข้อความอัตโนมัติ และไม่สามารถลบได้ด้วยคำสั่ง : message delete
message unpin [id]
เลิกปักหมุดข้อความ แต่ละครั้งที่มีการดำเนินการ guru
เซสชั่นจะถูกสร้างขึ้นโดยอัตโนมัติ ประวัติเซสชันจะถูกบันทึกไว้ในไดเร็กทอรี ~/.guru/session/
ตามค่าเริ่มต้น เมื่อเริ่มต้น คุณสามารถระบุ ID เซสชันด้วย --session-id, -s
หรือกู้คืนเซสชันล่าสุดด้วย --last
หากไม่มีรหัสเซสชันที่ระบุ รหัสนั้นจะถูกสร้างขึ้นโดยอัตโนมัติ
การจัดการเซสชันมีคุณสมบัติมากมาย คุณสามารถสร้างและสลับเซสชันภายใน Guru REPL เดียวกันได้ คุณลักษณะที่มีประโยชน์ที่สุดของการจัดการเซสชันคือเซสชันสแต็กซึ่งช่วยให้สามารถซ้อนเซสชันย่อยได้โดยไม่รบกวนเซสชันปัจจุบัน ความต่อเนื่องของเซสชันมีประโยชน์มาก เช่น ในการสนทนาที่ยาวนานเมื่อพูดถึงบทความ ฉันคาดหวังว่าข้อความการสนทนาจะถูกบันทึกไว้ จากนั้นฉันจะได้เห็นประวัติการสนทนาที่ชัดเจนเมื่อทบทวนในอนาคต Guru จะสนับสนุนการส่งออกประวัติเซสชันในภายหลังด้วย
guru > :session
Available commands:
:session new create a new session
:session remove delete a session
:session shrink shrink sessions
:session list list sessions
:session switch switch a session
:session history print history of current session
:session stack show the session stack
:session stack push create a new session, and stash the current
:session stack pop pop out current session
:session new
สร้างเซสชันใหม่ นอกจากนี้ยังสามารถเรียกผ่านนามแฝงชวเลข :new
:session remove [sid]
ลบเซสชัน:session shrink [expr]
จะย่อเซสชัน โดยที่ expr
คือนิพจน์ช่วง คล้ายกับคำสั่ง :message shrink
:session list
แสดงรายการเซสชันทั้งหมด โดยเซสชันปัจจุบันระบุด้วย *
:session switch [sid]
สลับไปยังเซสชันอื่น:session history
แสดงประวัติเซสชัน:session stack
จะแสดงสถานะของ session stack และสามารถถูกทริกเกอร์ผ่านนามแฝงแบบชวเลข :stack
:session stack push
สร้างเซสชันใหม่และพุชมันลงบนสแต็ก นอกจากนี้ยังสามารถถูกทริกเกอร์ผ่านนามแฝงชวเลข >
:session stack pop
pop จะแสดงเซสชันปัจจุบันจากสแต็ก นอกจากนี้ยังสามารถเรียกใช้ผ่านนามแฝงชวเลข <
>
เป็นคำสั่งพิเศษที่ทำหน้าที่เป็นนามแฝงสำหรับ :session stack push
เมื่อดำเนินการแล้ว ระบบจะสร้างเซสชันใหม่และพุชเข้าสู่สแต็ก พรอมต์คำสั่งจะเพิ่มสัญลักษณ์ ">" ต่อท้าย เช่น guru >>
<
เป็นนามแฝงสำหรับ :session stack pop
เมื่อดำเนินการ จะแสดงเซสชันบนสุดออกจากสแต็ก และพรอมต์คำสั่งจะลบสัญลักษณ์ ">"
หมายเหตุ: ปัจจุบันมีเพียงคำสั่ง
>
และ<
เท่านั้นที่จะส่งผลต่อพรอมต์คำสั่ง การใช้:session stack push/pop
โดยตรงจะไม่มีผลกระทบนี้ แต่เราวางแผนที่จะปรับปรุงกลไกนี้ในอนาคต
คำสั่ง prompt repo
ช่วยให้คุณสามารถเพิ่มหรือซิงค์ที่เก็บพร้อมต์ได้ ปัจจุบัน Guru รองรับที่เก็บ prompt คุณภาพสูงสองแห่ง: awesome-chatgpt-prompts
และ awesome-chatgpt-prompts-zh
ผู้ใช้ยังสามารถเพิ่มที่เก็บรายการโปรดของตนเองได้
โปรดทราบว่าในการใช้งานครั้งแรก พรอมต์ระยะไกลอื่นที่ไม่ใช่ Cheatsheet
และ Committer
จะต้องมีคำสั่ง :prompt repo sync
เพื่อซิงค์ไฟล์เพื่อใช้งาน ไฟล์พรอมต์ที่ซิงค์จะถูกจัดเก็บไว้ในไดเร็กทอรี ~/.guru/prompt/
ตามค่าเริ่มต้น
guru > :prompt
Available commands:
:prompt act as act as a role
:prompt list list all prompts
:prompt repo sync sync prompts with remote repos
:prompt repo add add a remote repo
:prompt repo list list remote repos
Alias commands:
:prompts alias :prompts = :prompt list
คำสั่ง :prompt
ช่วยให้คุณสามารถใช้พร้อมต์ที่กำหนดไว้ในพื้นที่เก็บข้อมูลของ awesome-chatgpt-prompts
ของคุณ รวมถึงเพิ่มและซิงค์ที่เก็บพร้อมต์ของคุณเอง
:prompt act as
ทำหน้าที่เป็นบทบาทของ prompt นอกจากนี้ยังสามารถถูกทริกเกอร์ผ่านนามแฝงชวเลข :act as
:prompt list
แสดงรายการข้อมูลพร้อมท์ที่โหลดทั้งหมด และสามารถเรียกใช้ผ่านนามแฝงชวเลข :prompts
:prompt repo add/sync/list
เพิ่ม ซิงค์ และแสดงรายการที่เก็บข้อมูลพร้อมท์ guru > :act as Linux Terminal
คุณสามารถใช้เครื่องหมาย $
เพื่อดำเนินการคำสั่งระบบ และผลลัพธ์ของคำสั่งจะถูกส่งไปยัง ChatGPT ในการสนทนารอบถัดไป สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณต้องการโหลดไฟล์
หากไม่มีคำสั่งตามหลังเครื่องหมาย $
Guru จะเปลี่ยนไปใช้โหมดเชลล์ และพรอมต์คำสั่งจะเปลี่ยนเป็น guru $
ในโหมดนี้ คำสั่งใดๆ ที่คุณป้อนจะถูกดำเนินการเหมือนกับในเชลล์ และเอาต์พุตทั้งหมดจะถูกส่งไปยัง ChatGPT ในการสนทนารอบถัดไป
ในโหมดเชลล์ การป้อน >
จะกลับสู่โหมดการสนทนา
:info
ดูพารามิเตอร์สด:set
การตั้งค่าพารามิเตอร์สด dir /Users/shafreeck/.guru
filename
openai-api-key sk-************************************************
pin false
prompt
session-id chat-1680879639912-1ec4e509-af5b-4abb-9f4b-bebde2276d96
socks5 localhost:8804
stdin false
timeout 3m0s
------------------------------
chatgpt.frequency_penalty 0
chatgpt.max_tokens 0
chatgpt.model gpt-3.5-turbo
chatgpt.n 1
chatgpt.presence_penalty 0
chatgpt.stop
chatgpt.stream true
chatgpt.temperature 1
chatgpt.top_p 1
chatgpt.user
disable-auto-shrink false
executor
feedback false
non-interactive false
oneshot false
system
verbose false
:set chatgpt.temperature 0.5
Executor เป็นคุณสมบัติที่ทรงพลังและเป็นเอกลักษณ์ที่สุดของกูรู เมื่อเริ่มต้น Guru คุณสามารถระบุตัวดำเนินการได้โดยใช้อาร์กิวเมนต์ --executor, -e
หลังจากการแชทแต่ละรอบ Guru จะส่งเอาต์พุต ChatGPT ไปยังผู้ดำเนินการผ่าน stdin หากระบุ --feedback
เอาต์พุตของผู้ดำเนินการจะถูกป้อนกลับไปยัง ChatGPT ด้วย
ตัวดำเนินการแตกต่างจากคำสั่งระบบที่กล่าวถึงข้างต้น คำสั่งของระบบจะเพิ่มคุณค่าให้กับวิธีการป้อนข้อมูลผ่าน shell
เท่านั้น ในขณะที่ตัวดำเนินการถูกใช้เพื่อจัดการเอาต์พุต ChatGPT การใช้ input
-> output
-> input
แบบวงปิดที่สมบูรณ์ ซึ่งหมายความว่าเราสามารถใช้ตัวดำเนินการระหว่างการสนทนาเพื่อประมวลผลข้อความได้
เพื่อเหตุผลด้านความปลอดภัย จำเป็นต้องมีการยืนยันผู้ใช้สำหรับการเรียกผู้ดำเนินการแต่ละครั้ง
สถานการณ์การใช้งานที่ง่ายที่สุดคือการรันคำสั่งที่ ChatGPT ส่งคืนผ่าน shell
> guru cheat -e sh
คุณสามารถใช้คำสั่งต่อไปนี้เพื่อให้บรรลุการสนทนาด้วยตนเองของ ChatGPT:
> guru -e "guru --dir ./conversation --last" --feedback Hi
หลักการของการสนทนาด้วยตนเองคือการใช้ guru
อื่นเป็นผู้ดำเนินการ ตั้งค่า --dir
ของ guru
ที่สองเป็นไดเร็กทอรีอิสระของตัวเองเพื่อหลีกเลี่ยงความสับสนกับ guru
ตัวแรก และตั้งค่า --last
เพื่อกู้คืนเซสชันทุกครั้งที่เริ่ม เพื่อรักษาบริบทของการสนทนา