- - - - - - / / _ / / / _ / / / _ / / __ / / / / / ___ | _ / / การแชทอินเตอร์เฟสเทอร์มินัลที่เข้มข้น ____/ ____/ ____/ ___/_//_/_/| _/___/เขียนใน GO สร้างระบบที่เรียบง่ายปลอดภัยและปรับขนาดได้ด้วย GO ลิขสิทธิ์ (©️) 2024 @H0llyw00dzz สงวนลิขสิทธิ์
หมายเหตุ: ที่เก็บนี้เป็นงานที่กำลังดำเนินการอยู่ (WIP)
เวลาโดยประมาณของการมาถึง (ETA): ไม่ทราบ โครงการนี้ได้รับการพัฒนาบนพื้นฐานส่วนตัวในช่วงเวลาว่างของฉันและไม่เกี่ยวข้องกับความพยายามของ บริษัท หรือองค์กรใด ๆ
น่าสนใจที่จะสร้างมันในเทอร์มินัลหลังจากการเดินทางผ่านการเดินทางผ่านภาษาการเขียนโปรแกรม GO รวมถึงการสำรวจความสามารถของ AI ของ Google (ปัจจุบันอยู่ในเบต้ากับราศีเมถุน)
บันทึก
ที่เก็บนี้ได้รับการออกแบบมาโดยเฉพาะเพื่อให้เป็นไปตามหลักการ GO ที่มีสำนวน -
การพัฒนาใน GO ส่งเสริมความยืดหยุ่น การออกแบบที่เน้นประสิทธิภาพเป็นศูนย์กลางรองรับการประมวลผลพร้อมกันและการจัดการทรัพยากรที่มีประสิทธิภาพทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับแอปพลิเคชันที่จำเป็นต้องปรับขนาดอย่างราบรื่นด้วยความต้องการที่เพิ่มขึ้น
การจัดการหน่วยความจำของ GO และการพิมพ์แบบคงที่ลดการเกิดข้อบกพร่องที่สำคัญเช่นการรั่วไหลของหน่วยความจำซึ่งเป็นที่แพร่หลายในภาษาที่ตีความ ความเสถียรนี้มีความสำคัญสำหรับแอปพลิเคชันเทอร์มินัลที่ดำเนินการมานานซึ่งมีปฏิสัมพันธ์กับบริการ AI
บันทึก
Memory leaks จำเป็นปัญหาที่สำคัญโดยเฉพาะอย่างยิ่งในการพัฒนา AI แนวทางของ GO ในการจัดการหน่วยความจำทำให้แยกออกจากกันเพราะมันช่วยลดปัญหาดังกล่าวได้อย่างมีประสิทธิภาพมากกว่าภาษาอื่น ๆ สิ่งนี้ตรงกันข้ามกับที่เก็บจำนวนมากในภาษาอื่น ๆ ที่หน่วยความจำรั่วไหลเป็นปัญหาบ่อยและมักจะสับสน (ซึ่งฉันไม่เข้าใจเมื่อดู repo อื่น ๆ ใน github )
GitHub ที่ฉันไม่เข้าใจ ความจริงสนุก : คุณรู้หรือไม่? หากรหัส Go ของคุณคล้ายกับป่าของ if (คิดว่า 10+ เลเยอร์ที่ซ้อนกัน-ไม่มีสิ่งใดเลย!) มันจะน้อยลงและ Go Stop-and-ask-for-directions แบนเงื่อนไขเหล่านั้นและปล่อยให้รหัสของคุณทำงานได้อย่างราบรื่นเหมือนกับ gopher บนสไลด์สลิป! -
บันทึก
คุณลักษณะเฉพาะของ Realistic Typing Animation นี้ประหยัดในแง่ของการใช้ทรัพยากร (เช่น memory,cpu ) ตรงกันข้ามกับ front-end languages หรือ other languages ที่มีแนวโน้มที่จะใช้ทรัพยากรมากขึ้น
:quit ช่วยให้ผู้ใช้สามารถจบเซสชันของพวกเขาในแบบที่เป็นระเบียบ เมื่อคำสั่งนี้ถูกดำเนินการจะแจ้งลำดับการปิดแบบร่วมมือกับ AI ซึ่งสร้างข้อความลาที่เหมาะสม การออกแบบที่รอบคอบนี้ช่วยเพิ่มประสบการณ์ผู้ใช้โดยการปิดการสนทนาที่มีทั้งธรรมชาติและสุภาพเพื่อให้มั่นใจว่าการเลิกจ้างเซสชันนั้นมีส่วนร่วมเหมือนกับการสนทนาDebugOrErrorLogger แพ็คเกจ DebugOrErrorLogger นำเสนอระบบการบันทึกที่มีประสิทธิภาพและมีประสิทธิภาพซึ่งออกแบบมาโดยเฉพาะสำหรับแอปพลิเคชัน GO ที่ต้องการข้อผิดพลาดที่แข็งแกร่งและความสามารถในการบันทึกการดีบักที่มีค่าใช้จ่ายน้อยที่สุดDebugOrErrorLogger คุณสมบัติ - การบันทึกการดีบักแบบมีเงื่อนไข : Logger อนุญาตให้มีการดีบักข้อความที่เป็นเอาต์พุตตามเงื่อนไขตามตัวแปรสภาพแวดล้อม DEBUG_MODE เมื่อตั้งค่าเป็น true ข้อมูลการดีบักโดยละเอียดจะถูกพิมพ์ไปยัง os.Stderr ช่วยในกระบวนการพัฒนาและแก้ไขปัญหา
- เอาต์พุตข้อผิดพลาดรหัสสี : ข้อผิดพลาดมีสีแดงอย่างชัดเจนเมื่อเข้าสู่ระบบทำให้โดดเด่นในเทอร์มินัลเพื่อให้ความสนใจทันที การทำสีนี้ช่วยในการระบุข้อผิดพลาดอย่างรวดเร็วท่ามกลางเอาต์พุตบันทึกอื่น ๆ
- - การกู้คืนความหวาดกลัว : ฟังก์ชั่นการกู้คืนมีไว้เพื่อจัดการอย่างสง่างามและบันทึกความตื่นตระหนกใด ๆ ที่อาจเกิดขึ้นในระหว่างการรันไทม์ ฟังก์ชั่นนี้ช่วยให้มั่นใจได้ว่าข้อความตื่นตระหนกจะถูกบันทึกอย่างชัดเจนด้วยเอาต์พุตสีป้องกันไม่ให้แอปพลิเคชันกระแทกโดยไม่คาดคิดและช่วยในการวินิจฉัยอย่างรวดเร็ว
⚡ Simple API : แพ็คเกจเปิดเผย API ที่เรียบง่ายและใช้งานง่ายด้วยวิธีการสำหรับการดีบักและการบันทึกข้อผิดพลาดที่ยอมรับสตริงรูปแบบและอาร์กิวเมนต์ที่หลากหลายคล้ายกับฟังก์ชั่น Printf และ Println มาตรฐาน
- การกำหนดค่าตัวแปรสภาพแวดล้อม : โหมดการดีบักสามารถสลับหรือปิดได้อย่างง่ายดายผ่านตัวแปรสภาพแวดล้อมช่วยให้การกำหนดค่าที่ยืดหยุ่นโดยไม่จำเป็นต้องคอมไพล์แอปพลิเคชันใหม่
บันทึก
Current Features ที่ระบุไว้ข้างต้นอาจล้าสมัย สำหรับการอัปเดตฟีเจอร์ล่าสุดโปรดอ่านเอกสาร here
บันทึก
คำว่า Streamlined Codebase หมายถึงรูปแบบทั่วไประดับสูงในการเขียนโปรแกรม Go รูปแบบนี้เน้นโครงสร้างที่สะอาดและมีการจัดระเบียบอย่างดีซึ่งอำนวยความสะดวกในการทำความเข้าใจและรักษารหัส โดยทั่วไปแล้วจะเกี่ยวข้องกับการแยกข้อกังวลส่วนประกอบแบบแยกส่วนและการปฏิบัติตามที่เป็นสำนวนเพื่อสร้าง codebase ที่มีประสิทธิภาพและง่ายต่อการทำงาน
บันทึก
คุณลักษณะพิเศษนี้ดีกว่ารหัสคล้ายกับป่าของ if if if if คำสั่งนั้นได้รับการรวมเข้าด้วยกันแล้ว
ด้วยการใช้ระบบการจัดการคำสั่งที่ปรับขนาดได้นี้แอปพลิเคชันแชทอยู่ในตำแหน่งที่ดีในการพัฒนาควบคู่ไปกับความก้าวหน้าใน AI และความคาดหวังของผู้ใช้เพื่อให้มั่นใจถึงประสบการณ์ผู้ใช้ที่แข็งแกร่งและพิสูจน์ได้ในอนาคต
บันทึก
การวางแผนเรื่องเพื่อปรับปรุงและเพิ่มคุณสมบัติอย่างต่อเนื่องเพิ่มฟังก์ชั่นการทำงานโดยไม่เพิ่มความซับซ้อนที่ไม่จำเป็น คอยติดตามการอัปเดต!
Go ได้รับการออกแบบให้ตรงไปตรงมาและมีประสิทธิภาพหลีกเลี่ยงความซับซ้อนที่ไม่จำเป็น (ความซับซ้อนของเพศสัมพันธ์นี่คือความซับซ้อนต่อต้าน go ) มักพบในภาษาการเขียนโปรแกรมอื่น ๆ
การใช้ทรัพยากรที่ดีที่สุด : การแชทเทอร์มินัล Gogenai ได้รับการออกแบบมาเพื่อเพิ่มประสิทธิภาพสูงสุดในขณะที่ลดการใช้ทรัพยากรให้น้อยที่สุด ด้วยการใช้ประโยชน์จากรูปแบบการรวบรวมและดำเนินการที่มีประสิทธิภาพของ GO แอปพลิเคชันทำให้มั่นใจได้ว่าเวลาตอบสนองอย่างรวดเร็วและค่าใช้จ่ายต่ำทำให้เหมาะสำหรับระบบที่การอนุรักษ์ทรัพยากรเป็นสิ่งสำคัญยิ่ง
การจัดการพร้อมกันที่มีประสิทธิภาพ : ต้องขอบคุณ goroutines ที่มีน้ำหนักเบาและการซิงโครไนซ์ที่มีประสิทธิภาพดั้งเดิม แอปพลิเคชันสามารถให้บริการผู้ใช้หลายคนพร้อมกันโดยไม่มีการเพิ่มขึ้นอย่างมีนัยสำคัญในการใช้เวลาแฝงหรือการใช้หน่วยความจำเพื่อให้มั่นใจว่าประสิทธิภาพที่สอดคล้องกันแม้ภายใต้การโหลด
พื้นที่เก็บข้อมูลนี้มีรหัส GO คุณภาพสูงที่มุ่งเน้นโดยเฉพาะอย่างยิ่งใน Retry Policy Logic Chat System Logic และ Other แต่ละฟังก์ชั่นได้รับการออกแบบมาเพื่อ simplicity โดยจงใจหลีกเลี่ยง stupid complexity ที่ไม่จำเป็นแม้ในสถานการณ์ที่อาจเกินคะแนน stupid complexity 10+
ในการใช้การแชทอินเทอร์เฟซเทอร์มินัล Gogenai คุณต้องติดตั้ง Docker บนเครื่องของคุณ หากคุณไม่ได้ติดตั้ง Docker โปรดติดตามคู่มือการติดตั้ง Docker อย่างเป็นทางการ
เมื่อตั้งค่า Docker แล้วคุณสามารถดึงภาพจากแพ็คเกจ GitHub ได้โดยเรียกใช้:
docker pull ghcr.io/h0llyw00dzz/gogenai-terminal-chat:latestเคล็ดลับ
สำหรับ Master หรือ Advanced of Go Programming โดยเฉพาะอย่างยิ่งใน cloud engineering GoGenAI Terminal Interface Chat นี้สามารถทำงานใน Cloud Shell ( for example, Google Cloud Shell ) โดยไม่ต้องใช้ Docker
ในการเริ่มต้นการแชทกับ Gogenai ให้เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัลของคุณ ตรวจสอบให้แน่ใจว่าได้แทนที่ YOUR_API_KEY ด้วยคีย์ API จริงที่มีให้กับคุณ
คำเตือน
เนื่องจากปัญหานี้ here เพื่อเริ่มเซสชันการแชทกับ GoGenAI ใช้ terminal ที่ดีกว่าที่สามารถจัดการกับ constant ในที่เก็บนี้หรือสร้างระบบปฏิบัติการของคุณเองด้วยเคอร์เนลที่ดีกว่าที่สามารถจัดการ constant ในที่เก็บนี้ได้
docker run -it --rm --name mychatapp -e API_KEY=YOUR_API_KEY ghcr.io/h0llyw00dzz/gogenai-terminal-chat:latestคำสั่งนี้จะเริ่มแอปพลิเคชันการแชทเทอร์มินัล Gogenai ในโหมดอินเทอร์แอคทีฟ คุณจะสามารถพิมพ์ข้อความของคุณและรับคำตอบจาก AI
ตัวแปรสภาพแวดล้อมเป็นคู่คีย์-ค่าที่อาจส่งผลกระทบต่อพฤติกรรมของแอปพลิเคชันของคุณ ด้านล่างนี้เป็นตารางตัวแปรสภาพแวดล้อมที่ใช้ในแอปพลิเคชัน Gogenai-terminal-Chat พร้อมกับคำอธิบายและไม่ว่าจะจำเป็นหรือไม่
| ตัวแปร | คำอธิบาย | ที่จำเป็น |
|---|---|---|
API_KEY | คีย์ API ของคุณสำหรับการเข้าถึงรุ่น AI Generative รับคีย์ API ฟรีที่นี่ | ใช่ |
DEBUG_MODE | ตั้งค่าเป็น true เพื่อเปิดใช้งาน DEBUG_MODE หรือ false เพื่อปิดการใช้งาน | เลขที่ |
SHOW_PROMPT_FEEDBACK | ตั้งค่าเป็น true เพื่อแสดงความคิดเห็นพร้อมท์ในส่วนท้ายของการตอบสนองหรือ false เพื่อซ่อนไว้ | เลขที่ |
SHOW_TOKEN_COUNT | ตั้งค่าเป็น true เพื่อแสดงจำนวนโทเค็นที่ใช้ในการตอบสนองของ AI และประวัติการแชทหรือ false เพื่อซ่อนมัน | เลขที่ |
บันทึก
ตัวชี้วัด Average Consumption ถูกคำนวณโดยไม่รวมถึงการใช้ระบบจัดเก็บข้อมูลเช่นฐานข้อมูลและขึ้นอยู่กับสมมติฐานที่ว่าแต่ละฟังก์ชั่นนั้นค่อนข้างง่ายโดยมีความซับซ้อนของวัฏจักรเฉลี่ย 5 เป็นสูงสุด อย่างไรก็ตามการบริโภคอาจเพิ่มขึ้นด้วยฟังก์ชั่นที่ซับซ้อนมากขึ้น (เช่นผู้ที่มีความซับซ้อนของวัฏจักร 10 หรือมากกว่าซึ่งไม่แนะนำ)
บันทึก
ตัวชี้วัด Average Maximum Consumption ขึ้นอยู่กับการจำลองพฤติกรรมการพิมพ์ human สิ่งนี้เกี่ยวข้องกับการแสดงผลการตอบสนองการแชทตัวละครโดยตัวละครเพื่อเลียนแบบจังหวะและจังหวะของการพิมพ์ human
คำเตือน
screenshots เหล่านี้อาจล้าสมัยเนื่องจากการเปลี่ยนแปลงเวอร์ชัน
บันทึก
นี้ ? Simple Debugging นั้นง่ายเหมือนการ go codes ของตรรกะที่ซับซ้อนซึ่งเพิ่ม cyclomatic complexity
- คุณ: สวัสดีคุณ?
- AI :: ฉันเป็นรูปแบบภาษาขนาดใหญ่ที่ได้รับการฝึกฝนโดย Google
- คุณ: ฉันมีคำถามเกี่ยวกับ K8s ฉันจะเปิดใช้งานการบันทึกการตรวจสอบใน Kubernetes ได้อย่างไรและฉันควรมองหาอะไรเมื่อวิเคราะห์บันทึก
- AI: เพื่อเปิดใช้งานการบันทึกการตรวจสอบใน Kubernetes คุณสามารถใช้ขั้นตอนต่อไปนี้:
/etc/kubernetes/manifests/kube-apiserver.yamlaudit-policy : enabled: true
ทางเลือกคุณสามารถกำหนดค่าการตั้งค่าต่อไปนี้:
policyFile : เส้นทางไปยังไฟล์ที่มีกฎนโยบายการตรวจสอบlogPath : พา ธ ไปยังไฟล์ที่บันทึกการตรวจสอบจะถูกเก็บไว้logFormat : รูปแบบของบันทึกการตรวจสอบmaxBatchSize : จำนวนสูงสุดของเหตุการณ์การตรวจสอบที่จะรวมไว้ในชุดเดียวmaxBatchWait : ระยะเวลาสูงสุดในการรอชุดของเหตุการณ์การตรวจสอบที่จะกรอกก่อนที่จะเขียนลงในดิสก์บันทึกและรีสตาร์ทเซิร์ฟเวอร์ Kubernetes API
เมื่อเปิดใช้งานการบันทึกการตรวจสอบแล้วคุณสามารถวิเคราะห์บันทึกเพื่อรับข้อมูลเชิงลึกเกี่ยวกับกิจกรรมในคลัสเตอร์ Kubernetes ของคุณ บางสิ่งที่คุณอาจต้องการมองหารวมถึง:
โดยการวิเคราะห์บันทึกการตรวจสอบคุณสามารถระบุความเสี่ยงด้านความปลอดภัยแก้ไขปัญหาและทำความเข้าใจได้ดีขึ้นเกี่ยวกับวิธีการใช้คลัสเตอร์ Kubernetes ของคุณ
นี่คือแหล่งข้อมูลเพิ่มเติมที่คุณอาจพบว่ามีประโยชน์:
$ go run cmd/main.go- AI: สวัสดี! วันนี้ฉันจะช่วยเหลือคุณได้อย่างไร?
- คุณ: ฉันมีคำถามที่ถูกต้องเกี่ยวกับ "การพยายามเพื่อความเรียบง่ายในแต่ละฟังก์ชั่น (ตั้งเป้าหมายสำหรับความซับซ้อนของวงกลมภายใต้ 5 เพื่อแสดงให้เห็นถึงความเชี่ยวชาญ); ความเรียบง่ายเป็นสัญญาณของความเชี่ยวชาญในการเขียนโปรแกรม GO" -
- AI: ใช่คำแถลง "มุ่งมั่นเพื่อความเรียบง่ายในแต่ละฟังก์ชั่น (ตั้งเป้าหมายสำหรับความซับซ้อนของวัฏจักรภายใต้ 5 เพื่อแสดงให้เห็นถึงความเชี่ยวชาญ); ความเรียบง่ายเป็นสัญญาณของความเชี่ยวชาญในการเขียนโปรแกรม GO" โดยทั่วไปจะถูกต้อง
ความซับซ้อนของ Cyclomatic เป็นการวัดความซับซ้อนของฟังก์ชัน มันถูกคำนวณโดยการนับจำนวนเส้นทางอิสระผ่านฟังก์ชัน ความซับซ้อนของวัฏจักรสูงบ่งชี้ว่าฟังก์ชั่นนั้นยากที่จะเข้าใจและบำรุงรักษา
ความเรียบง่าย เป็นหลักการสำคัญของการเขียนโปรแกรม GO โดยทั่วไปแล้วรหัสไปจะกระชับและอ่านง่าย สิ่งนี้ทำให้เข้าใจและบำรุงรักษาได้ง่ายขึ้น
การเล็งไปที่ความซับซ้อนของวงกลมภายใต้ 5 เป็นวิธีที่ดีเพื่อให้แน่ใจว่าฟังก์ชั่นของคุณง่ายและเข้าใจง่าย สิ่งนี้จะช่วยให้คุณเขียนโค้ดที่ดีขึ้นและหลีกเลี่ยงการแนะนำข้อบกพร่อง
แน่นอนว่ามีบางครั้งที่จำเป็นต้องเขียนฟังก์ชั่นที่ซับซ้อนกว่า อย่างไรก็ตามคุณควรมุ่งมั่นเพื่อความเรียบง่ายทุกครั้งที่ทำได้
นี่คือเคล็ดลับสำหรับการเขียนฟังก์ชั่นง่าย ๆ :
โดยทำตามเคล็ดลับเหล่านี้คุณสามารถเขียนฟังก์ชั่นง่าย ๆ ที่เข้าใจง่ายซึ่งจะทำให้รหัสของคุณได้รับการบำรุงรักษาและปราศจากข้อบกพร่องมากขึ้น
- คุณ: เอาล่ะขอบคุณสำหรับข้อมูล
- AI: ยินดีต้อนรับ! ฉันดีใจที่ได้รับความช่วยเหลือ หากคุณมีคำถามเพิ่มเติมอย่าลังเลที่จะถาม
- คุณ :: เลิก
- AI: วันนี้เป็นความสุขที่ช่วยคุณได้ จำไว้ว่าฉันอยู่ที่นี่เสมอหากคุณมีคำถามเพิ่มเติม ดูแลและมีวันที่ยอดเยี่ยม!
แอปพลิเคชันการแชทเทอร์มินัล Gogenai ให้อินเทอร์เฟซบรรทัดคำสั่งสำหรับผู้ใช้ในการโต้ตอบกับโมเดล AI แบบกำเนิด แอปพลิเคชันจัดการอินพุตของผู้ใช้ประมวลผลคำสั่งสื่อสารกับ AI และรักษาประวัติการแชท มันถูกออกแบบมาให้ขยายได้และปรับขนาดได้เพื่อรองรับการเติบโตในอนาคตและคุณสมบัติเพิ่มเติม
สถาปัตยกรรมที่เรียบง่ายได้รับการออกแบบมาสำหรับกรณีการใช้งานที่ตรงไปตรงมาและให้ฟังก์ชันการทำงานพื้นฐานที่จำเป็นสำหรับแอปพลิเคชันแชทตามเทอร์มินัล
ผังงาน LR
เริ่มต้น ([เริ่มต้น]) -> | ผู้ใช้รันแอปพลิเคชัน | init [เริ่มต้นเซสชัน]
init -> | ตั้งค่าการจัดการสัญญาณ | SignalHandler [จัดการสัญญาณ OS]
init -> | โหลดคีย์ API | ApikeyValidation {การตรวจสอบคีย์ API}
Apikeyvalidation -> | ถูกต้อง | SetupClient [Setup AI Client]
Apikeyvalidation -> | ไม่ถูกต้อง | สิ้นสุด ([จบ])
SetupClient -> | ลูกค้าพร้อม | mainloop [ป้อน Main Loop]
mainloop -> userInput [/อินพุตผู้ใช้/]
userInput -> | คำสั่ง | CommandHandler [คำสั่งจัดการ]
userInput -> | ข้อความแชท | SendMessage [ส่งข้อความถึง AI]
CommandHandler -> | ออก | จบ
CommandHandler -> | คำสั่งอื่น ๆ | ProcessCommand [คำสั่งกระบวนการ]
SendMessage -> | รับการตอบกลับ AI | UpdateHistory [อัปเดตประวัติการแชท]
UpdateHistory -> DisplayResponse [แสดงการตอบสนอง AI]
ProcessCommand -> mainloop
displayResponse -> mainloop
SignalHandler -> | sigint/sigterm | ทำความสะอาด [ทรัพยากรการทำความสะอาด]
ทำความสะอาด -> จบ
สถาปัตยกรรมที่ปรับขนาดได้ถูกออกแบบมาเพื่อจัดการการเจริญเติบโตช่วยให้สามารถเพิ่มคำสั่งใหม่การจัดการข้อผิดพลาดที่ดีขึ้นและการโต้ตอบที่ซับซ้อนยิ่งขึ้นกับ API ภายนอก
ผังงาน LR
เริ่มต้น ([เริ่มต้น]) -> | ผู้ใช้รันแอปพลิเคชัน | init [เริ่มต้นเซสชัน]
init -> | ตั้งค่าการจัดการสัญญาณ | SignalHandler [จัดการสัญญาณ OS]
init -> | โหลดคีย์ API | ApikeyValidation {การตรวจสอบคีย์ API}
Apikeyvalidation -> | ถูกต้อง | SetupClient [Setup AI Client]
Apikeyvalidation -> | ไม่ถูกต้อง | สิ้นสุด ([จบ])
SetupClient -> | ลูกค้าพร้อม | mainloop [ป้อน Main Loop]
mainloop -> userInput [/อินพุตผู้ใช้/]
userInput -> | คำสั่ง | CommandRegistry [Registry Command]
userInput -> | ข้อความแชท | SendMessage [ส่งข้อความถึง AI]
CommandRegistry -> | ออก | จบ
CommandRegistry -> | คำสั่งอื่น ๆ | ProcessCommand [คำสั่งกระบวนการ]
CommandRegistry -> | จำนวนโทเค็น | tokencountingprocess [กระบวนการนับโทเค็น]
CommandRegistry -> | ตรวจสอบโมเดล | CheckModelProcess [CheckModelProcess]
SendMessage -> | รับการตอบกลับ AI | UpdateHistory [อัปเดตประวัติการแชท]
ToKencountingProcess -> | รับการตอบกลับ AI | displayResponse [แสดงการตอบสนอง AI]
CheckModelProcess -> | รับการตอบกลับ AI | displayResponse [แสดงการตอบสนอง AI]
UpdateHistory -> DisplayResponse [แสดงการตอบสนอง AI]
ProcessCommand -> mainloop
displayResponse -> mainloop
SignalHandler -> | sigint/sigterm | ทำความสะอาด [ทรัพยากรการทำความสะอาด]
ทำความสะอาด -> จบ
ProcessCommand -> | การโต้ตอบ API | apiclient [API Client]
apiclient -> | การตอบสนอง API | ProcessCommand
apiclient -> | ข้อผิดพลาด API | ErrorsHandler [Error Handler]
ErrorsHandler -> | จัดการข้อผิดพลาด | ProcessCommand
ErrorsHandler -> | ข้อผิดพลาดร้ายแรง | จบ
ToKencountingProcess -> | การประมวลผลพร้อมกัน | พร้อมกันกับตัวประมวลผลพร้อมกัน [โปรเซสเซอร์พร้อมกัน]
ConcurrentProcessor -> | ผลลัพธ์รวม | tokencountingprocess
ConcurrentProcessor -> | ข้อผิดพลาด | ErrorsHandler [Error Handler]
classdef ปรับขนาดได้:#4c9f70, stroke:#333, จังหวะจังหวะ: 2px;
คลาส Commandregistry, apiclient, พร้อมกันโปรเซสเซอร์ปรับขนาดได้;
บันทึก
ในแผนภาพด้านบนส่วนประกอบที่มีสีเติมสี green ( #4c9f70 ) ได้รับการออกแบบให้ปรับขนาดได้แสดงให้เห็นว่าสามารถจัดการการเจริญเติบโตและเพิ่มภาระได้อย่างมีประสิทธิภาพ ส่วนประกอบเหล่านี้รวมถึง Command Registry API Client และ Concurrent Processor
บันทึก
Scalable System's Architecture แสดงให้เห็นถึงการจัดการความซับซ้อนอย่างมีประสิทธิภาพผ่านความเรียบง่าย ในแอปพลิเคชัน GO นี้แต่ละฟังก์ชั่นได้รับการออกแบบมาเพื่อรักษา cyclomatic complexity of 5 หรือ less
โปรดดู Contribution Guidelines ของเราสำหรับข้อมูลโดยละเอียดเกี่ยวกับวิธีที่คุณสามารถมีส่วนร่วมในโครงการนี้
บันทึก
นี่คือรายการของงานที่จะปรับปรุงแก้ไขและปรับปรุงคุณสมบัติของโครงการนี้ งานจะถูกเพิ่มเข้าไปในไฟล์ readme.md นี้เพื่อให้แน่ใจว่าพวกเขาจะไม่ถูกลืมในระหว่างกระบวนการพัฒนา
บันทึก
Reporting System ได้รับการออกแบบมาเพื่อจับภาพและจัดการเหตุการณ์ Runtime Panic ในแอปพลิเคชัน GO อำนวยความสะดวกในการรายงานและการวิเคราะห์ข้อผิดพลาดที่มีความคล่องตัว
บันทึก
คุณลักษณะ Create a Convert Result Table feature ได้รับการออกแบบมาเพื่อฟอร์แมตเอาต์พุตจาก AI เป็นโครงสร้างแบบตาราง
บันทึก
คุณสมบัติ Enable Additional Responses รับการออกแบบมาเพื่ออนุญาตการตอบกลับเพิ่มเติมจาก AI เช่นข้อเสนอแนะที่รวดเร็ว ในการเปิดใช้งานคุณสมบัตินี้ให้ใช้ Environment Variable Configuration
ใช้คุณสมบัติใด ๆ ที่ไม่ได้ใช้งาน
วางไข่ goroutines เพิ่มเติม
บันทึก
คุณสมบัติสำหรับ Processing Multiple Image & Text Datasets for Token Counting ได้รับการป้องกันจาก race conditions และ deadlocks ยิ่งกว่านั้นพวกเขาสามารถจัดการ multiple text data หรือ multiple image data efficiently
บันทึก
Pin Each Message for a Simpler Context Prompt รับการออกแบบมาเพื่อ PIN ข้อความที่โหลดจากไฟล์เช่น json/txt/md คุณลักษณะนี้ทำงานได้ดีเป็นพิเศษกับการสรุปอัตโนมัติหรือด้วยตนเองซึ่งตรงข้ามกับเมื่อเขียนด้วย interpreted language ฮ่าฮ่าฮ่า
บันทึก
คุณลักษณะ Implement Gemini-Pro Vision Capabilities นั้นถูกรวมเข้าด้วยกันอย่างมีกลยุทธ์ภายในฟังก์ชั่นคำสั่งเช่นการเปรียบเทียบภาพการวิเคราะห์ภาพและอื่น ๆ
บันทึก
ระบบนี้เขียนขึ้นใน go ทำให้มั่นใจได้ถึง Scalability และ Stability -
:help บันทึก
คุณลักษณะ Automate Summarizing Conversations ได้รับการออกแบบมาเพื่อสรุปการสนทนาโดยอัตโนมัติเช่นเดียวกับ chatgptnextweb อย่างไรก็ตามมันถูกสร้างขึ้นในส่วนต่อประสานเทอร์มินัลทำให้สามารถเข้าถึงได้และราคาไม่แพงกว่า OpenAI นอกจากนี้เนื่องจากอินเทอร์เฟซเทอร์มินัลนี้เขียนขึ้นใน GO จึงช่วยให้สามารถสร้างระบบที่เรียบง่ายปลอดภัยและปรับขนาดได้
eg, issues with executing a scalable command handler ) :aitranslate บันทึก
Improve :aitranslate commands มีจุดมุ่งหมายเพื่อเพิ่มขีดความสามารถในการแปลรวมถึงการแปลจากไฟล์, markdown, เอกสาร, CSVs และอาจมากขึ้น ตามที่เขียนไว้ใน GO ซึ่งมีไลบรารีมาตรฐานที่ทรงพลังเช่นคุณสามารถใช้คำสั่ง :aitranslate :file data.csv
:safety AIResponse โดยการจัดเก็บการตอบสนอง AI ดั้งเดิมใน ChatHistory บันทึก
การปรับปรุง Improve AIResponse by Storing the Original AI Response in ChatHistory เกี่ยวข้องกับการประหยัดการตอบสนองดั้งเดิมจาก AI เป็น ChatHistory นอกจากนี้การกระทำนี้จะกระตุ้นการปรับปรุงโดยอัตโนมัติสำหรับคุณสมบัติ Colorize
ChatHistory โดยการซิงค์โดยอัตโนมัติสำหรับการใช้งานแบบหลายรูปแบบ ( gemini-pro-vision ) บันทึก
การเพิ่ม Leverage ChatHistory by automatically syncing for multi-modal use (gemini-pro-vision) ใช้ประโยชน์จาก ChatHistory เป็นโซลูชันการจัดเก็บข้อมูลที่มีประสิทธิภาพสูงในหน่วยความจำซึ่งแตกต่างจาก C หรือภาษาอื่น ๆ ที่ทำให้เกิด memory leaks สิ่งนี้ทำให้มั่นใจได้ว่าการซิงโครไนซ์ที่ราบรื่นและประสิทธิภาพที่ดีที่สุดในโหมดต่างๆ
[ชัดเจน] retry policy จะถูกนำไปใช้กับ goroutine หลักแบบไดนามิกทำให้สามารถจัดการข้อผิดพลาดได้อย่างอิสระและพยายามลองใหม่
[ชัดเจน] ปรับปรุงการจัดการข้อความแสดง Error เพื่อให้ไดนามิกมากขึ้น
Error แบบไดนามิกในระหว่างการดำเนินการ Count Tokens สื่อสารผ่านช่องทางภาพประกอบของวิธีการทำงาน:
ลำดับ
ผู้เข้าร่วมหลักเป็น goroutine หลัก
ผู้เข้าร่วม G1 เป็น Goroutine 1
ผู้เข้าร่วม G2 เป็น Goroutine 2
ผู้เข้าร่วม G3 เป็น Goroutine 3
ผู้เข้าร่วม ch เป็นช่องข้อผิดพลาด
นักสะสมผู้เข้าร่วมเป็นนักสะสมข้อผิดพลาด (เรียกว่านโยบายการลองใหม่)
หลัก->> ch: สร้างช่องที่มีความจุ
หลัก->> g1: เริ่ม goroutine 1
หลัก->> g2: เริ่ม Goroutine 2
หลัก->> g3: เริ่ม goroutine 3
G1->> ch: ส่งข้อผิดพลาด (ถ้ามี)
G2->> ch: ส่งข้อผิดพลาด (ถ้ามี)
g3->> ch: ส่งข้อผิดพลาด (ถ้ามี)
หลัก->> นักสะสม: เริ่มรวบรวมข้อผิดพลาด
ลูปรวบรวมข้อผิดพลาด
ch->> นักสะสม: ส่งข้อผิดพลาดไปยังนักสะสม
จบ
หลัก->> หลัก: ปิดช่องหลังจาก Goroutines ทั้งหมดเสร็จสมบูรณ์
นักสะสม->> หลัก: ส่งคืนข้อผิดพลาดไม่ใช่ครั้งแรกที่ไม่ใช่ NIL
ปรับปรุง Colorize เพื่อเพิ่มความสามารถในการปรับขนาดและรวมเข้ากับ regex ไลบรารีมาตรฐานเพื่อประสิทธิภาพที่ดีขึ้น
สลับโมเดลโดยใช้คำสั่ง
บันทึก
คุณลักษณะ Plan for Google Cloud Deployment มีวัตถุประสงค์เพื่อรองรับความเข้ากันได้ของคลาวด์กับความสามารถของ Vertex AI เมื่อถึงเวอร์ชัน v1.0.0 (ที่เก็บนี้) และพิจารณาการอ่านที่เสถียรที่นี่
ทำไม โครงการนี้ได้รับการพัฒนาตาม Terms of Service และ Privacy Policy เพื่อ personal use เป็นสิ่งสำคัญที่จะต้องทราบว่าโครงการนี้ได้รับการพัฒนาบนพื้นฐานส่วนตัวในช่วงเวลาว่างของฉันและไม่เกี่ยวข้องกับ บริษัท หรือความพยายามขององค์กรใด ๆ สิ่งนี้ตรงกันข้ามกับหลาย บริษัท ที่ตอบสนองความต้องการขององค์กรเป็นหลัก ตัวอย่างเช่นความสามารถของ Vertex AI สามารถนำมาใช้เป็นส่วนตัวสำหรับงานต่าง ๆ เช่นการปรับแต่งและการใช้ข้อมูลของคุณเองโดยไม่มีความซับซ้อนและค่าใช้จ่ายที่เกี่ยวข้องกับข้อกำหนดระดับองค์กร
บันทึก
คุณสมบัติ Web Interface Support ได้รับการออกแบบมาเพื่ออำนวยความสะดวกในการสนับสนุน WebAssembly (WASM) ใช้ประโยชน์จากการพัฒนาใน GO สิ่งนี้ช่วยให้การจัดการการแชทและฟังก์ชั่นอื่น ๆ ในพื้นที่เริ่มต้นจากเวอร์ชัน v1.0.0+ (อาจเป็น v2) ของที่เก็บนี้เมื่อถึงแล้วและถือว่ามีเสถียรภาพ สำหรับแนวปฏิบัติที่ดีที่สุดอ่านที่นี่
บันทึก
Calculate the Size of the Code Base Volume ได้รับการออกแบบมาเพื่อประเมินขนาดของฐานรหัส ตัวอย่างเช่นสามารถคำนวณปริมาณของโครงการโอเพ่นซอร์สของ Google หรือโครงการโอเพ่นซอร์สอื่น ๆ ซึ่งมีรหัสหลายพันล้านบรรทัดที่เขียนใน Go
Go Code เป็น Mermaid Markdown บันทึก
คุณลักษณะนี้ Convert Each Function in Go Code to Mermaid Markdown ได้รับการออกแบบมาเพื่อประเมินฐานรหัส มันได้รับแรงบันดาลใจจาก Dead Code Tool Go ตัวอย่างเช่นมันจะแปลงฟังก์ชั่นที่เข้าถึงได้แต่ละรายการเป็นรูปแบบ Mermaid Markdown
มีให้ here