Show HN: เพิ่ม Mistral Codestral และ GPT-4o ลงใน Jupyter Notebook
(github.com/pretzelai)- Pretzel เป็นฟอร์กของ Jupyter ที่เพิ่มการสร้าง·แก้ไขโค้ดด้วย AI, การเติมโค้ดแบบอินไลน์ด้วยแท็บ, แชตในแถบด้านข้าง และการแก้ข้อผิดพลาด โดยออกแบบมาให้ใช้การตั้งค่า·คีย์ไบน์ดิง·ส่วนขยายเดิมของ Jupyter ได้อย่างราบรื่น
- เริ่มต้นได้ง่าย ๆ ด้วย
pip install pretzelaiแล้วรันpretzel labและถ้าไม่อยากติดตั้งก็ใช้เวอร์ชันโฮสต์ฟรีอย่าง pretzelai.app ได้ - ฟีเจอร์อย่าง Ask AI ในเซลล์,
Cmd+K/Ctrl+K, AI Sidebar, การอ้างอิงตัวแปรด้วย@, การแก้ไขเฉพาะส่วนที่เลือก และปุ่มแก้ข้อผิดพลาด ใช้โค้ดในโน้ตบุ๊กและตัวแปรของเซสชันเป็นบริบทให้ AI - โมเดลเริ่มต้นตาม FAQ คือ GPT-4o ส่วนการเติมโค้ดแบบอินไลน์ใช้ Mistral Codestral และยังเชื่อมต่อโมเดลภายนอกหรือโมเดลโลคัลอย่าง OpenAI, Anthropic/Claude, Ollama, Groq, Azure ได้จากการตั้งค่า
- ไม่มีการเก็บข้อมูลส่วนบุคคล แต่ระบบอาจเก็บ telemetry ของฟีเจอร์ AI และพรอมป์ต์ โดยไม่เก็บโค้ดหรือคำตอบ และโค้ดใหม่เผยแพร่ภายใต้ AGPLv3
เป้าหมายของ Pretzel และความเข้ากันได้กับ Jupyter
- Pretzel เป็นฟอร์กที่สร้างขึ้นเพื่อปรับปรุงประสบการณ์การใช้งาน Jupyter
- เพิ่มฟีเจอร์การสร้าง·แก้ไขโค้ดด้วย AI, การเติมโค้ดแบบอินไลน์ด้วยแท็บ, แชตในแถบด้านข้าง และการแก้ข้อผิดพลาด
- แม้ย้ายจาก Jupyter มาใช้ Pretzel, config, การตั้งค่า, คีย์ไบน์ดิง และส่วนขยายเดิมก็ยังทำงานได้เป็นหลัก
- เป้าหมายสำคัญคือทำให้ผู้ใช้ Jupyter ใช้ฟีเจอร์ AI ได้โดยแทบไม่รู้สึกถึงต้นทุนในการย้าย
เริ่มต้นอย่างรวดเร็วและการติดตั้ง
- ติดตั้งพื้นฐานด้วย
pip install pretzelai - รันเว็บอินเทอร์เฟซด้วยคำสั่งต่อไปนี้
pretzel lab
- ใช้เวอร์ชันโฮสต์ฟรีได้ที่ pretzelai.app
- ในสภาพแวดล้อม conda ให้รัน
conda install pipก่อน แล้วค่อยใช้pip install pretzelai - หากติดตั้งยาก สามารถรันผ่าน Docker container ได้
- แนะนำให้ใช้ Docker เมื่อการติดตั้งแบบโลคัลติดปัญหา เช่น บน Windows
- คอนเทนเนอร์จะเปิดพอร์ต
8888และรันในรูปแบบpretzel lab --ip=0.0.0.0 - หากต้องการเข้าถึงโฟลเดอร์โลคัล ให้แมปไดเรกทอรีปัจจุบันเข้าไปในคอนเทนเนอร์ด้วย
-v $(pwd):/root/pretzel - หากต้องการอัปเดตเป็นเวอร์ชันล่าสุด ให้บิลด์อิมเมจใหม่ด้วย
docker build --no-cache -t pretzel .
- เวอร์ชัน bleeding edge สามารถบิลด์ได้จาก Dockerfile ในรีโพซิทอรี
ข้อผิดพลาดระหว่างติดตั้งและเครื่องมือสำหรับบิลด์
- ข้อผิดพลาด
Failed to build installable wheels for some pyproject.toml based projects (pystemmer)หมายถึงการติดตั้ง dependencyPyStemmerล้มเหลว - สาเหตุที่พบบ่อยคือไม่มี build tools ที่จำเป็น
- วิธีแก้จะแตกต่างกันตามระบบปฏิบัติการ
- Windows: ติดตั้ง Microsoft Build Tools
- Ubuntu และตระกูล Debian:
sudo apt-get update && sudo apt-get install build-essential python3-dev - macOS:
brew install gccและถ้าจำเป็นให้รันxcode-select --install
- หลังติดตั้ง build tools แล้ว ให้รัน
pip install pretzelaiอีกครั้ง
ฟีเจอร์ AI ภายในโน้ตบุ๊ก
-
การเติมโค้ดแบบอินไลน์ด้วยแท็บ
- เมื่อเริ่มพิมพ์ในเซลล์ จะใช้ การเติมโค้ดแบบอินไลน์ด้วยแท็บ ได้
- การเติมจะถูกทริกเกอร์หลังรอ 1 วินาที และจะมีสปินเนอร์เล็ก ๆ แสดงอยู่หน้าปุ่ม Ask AI สีฟ้าในเซลล์
- Pretzel AI Server เริ่มต้นใช้ Mistral Codestral สำหรับการเติมโค้ดแบบอินไลน์
- เปลี่ยนโมเดลสำหรับการเติมโค้ดแบบอินไลน์ได้ใน Pretzel AI Settings
-
การสร้างและแก้ไขโค้ด
- ในเซลล์ กด
Cmd+KหรือCtrl+Kหรือคลิก Ask AI เพื่อเปิดช่องป้อนพรอมป์ต์ AI - เมื่อพิมพ์
@จะมีดรอปดาวน์รายชื่อตัวแปรของเซสชันปัจจุบันแสดงขึ้น - หากใส่
@variableในพรอมป์ต์ ค่าของตัวแปรนั้นจะถูกส่งให้ AI - โค้ดที่เกี่ยวข้องในโน้ตบุ๊กปัจจุบันจะถูกเพิ่มเข้าไปในบริบทของ AI โดยอัตโนมัติ
- ถ้าเป็นเซลล์ที่มีโค้ดอยู่แล้ว พรอมป์ต์จะใช้แก้ไขโค้ดนั้น
- หากเลือกเพียงบางส่วนของโค้ด จะมีการแก้ไขเฉพาะส่วนที่เลือก
- สามารถยอมรับหรือปฏิเสธคำตอบได้ และแก้พรอมป์ต์เพื่อส่งใหม่ได้
- ใช้
↑และ↓เพื่อวนดูประวัติพรอมป์ต์ได้
- ในเซลล์ กด
-
AI Sidebar
- เปิด AI Sidebar ได้ด้วย
Ctrl+Cmd+BหรือCtrl+Alt+Bหรือกดไอคอน Pretzel ในแถบด้านขวา - ใช้สำหรับถามคำถาม, สร้างโค้ด และค้นหาโค้ดที่มีอยู่แล้ว
- AI จะใช้โค้ดของเซลล์ที่ active อยู่เป็นบริบทเสมอ
- หากเลือกโค้ดใน active cell จะใช้เฉพาะส่วนที่เลือกเป็นบริบท
- สามารถอ้างอิงตัวแปรและดาต้าเฟรมในหน่วยความจำได้ด้วยไวยากรณ์
@ - ตัวอย่างงานที่ทำได้ เช่น ปรับปรุงประสิทธิภาพของฟังก์ชัน, ค้นหาโค้ดสำหรับลบ outlier, อธิบายโค้ดในเซลล์ปัจจุบัน, สร้างฮิสโตแกรม age ของ
@df, และคำนวณยอดขายเฉลี่ยตามประเภทสินค้าในดาต้าเฟรมsales_data
- เปิด AI Sidebar ได้ด้วย
-
การแทรกโค้ดเข้าไประหว่างโค้ดเดิม
- วางเคอร์เซอร์บนบรรทัดว่างหรือบรรทัดโค้ดเดิม แล้วกด
Cmd+Kเพื่อเปิดพรอมป์ต์ AI - หากขึ้นต้นพรอมป์ต์ด้วย
injectหรือijระบบจะเพิ่มเฉพาะโค้ดใหม่โดยไม่แก้ไขโค้ดเดิม - โค้ดใหม่จะถูกเพิ่มที่ หนึ่งบรรทัดถัดจาก ตำแหน่งเคอร์เซอร์
- วางเคอร์เซอร์บนบรรทัดว่างหรือบรรทัดโค้ดเดิม แล้วกด
-
การแก้ข้อผิดพลาด
- เมื่อเกิดข้อผิดพลาด จะมีปุ่ม Fix Error with AI ปรากฏที่มุมขวาบน
- คลิกปุ่มเพื่อให้ AI ช่วยลองแก้ข้อผิดพลาดได้
โมเดล AI และการตั้งค่า
- Pretzel ใช้งานได้ทันทีโดยไม่ต้องตั้งค่าเพิ่มเติม
- โค้ดหรือข้อมูลที่ส่งไปยัง Pretzel AI Server เริ่มต้นจะไม่ถูกจัดเก็บ
- หากต้องการใช้โมเดล AI อื่น สามารถเชื่อมต่อผู้ให้บริการหลายรายและโมเดลโลคัลได้จากการตั้งค่า
- OpenAI
- Anthropic/Claude
- Ollama
- Groq
- Azure
- เส้นทางการตั้งค่าคือ
Settings→Pretzel AI Settingsจากเมนูด้านบน - ใน AI Settings สามารถเลือกโมเดลสำหรับแชตและโมเดลสำหรับการเติมโค้ดแบบอินไลน์แยกกันได้
- เพื่อประสิทธิภาพ แนะนำให้ใช้โมเดลระดับ GPT-4
- GPT-4 Turbo
- GPT-4o
- Claude-3.5 Sonnet
- Claude-3 Opus
- Llama-3.1 405B
- ใน Configure AI Services สามารถเปิด·ปิดบริการ AI และกรอก API key หรือ URL ได้
- Azure และ Ollama ถูกปิดไว้ตามค่าเริ่มต้น แต่ผู้ใช้เปิดใช้งานเองได้
- หลังเปลี่ยนการตั้งค่าแล้วต้องกดบันทึก และ Pretzel จะตรวจสอบว่าการตั้งค่าถูกต้องหรือไม่
- โมเดล Azure Enterprise OpenAI ยังไม่ได้รับการทดสอบ และสามารถรายงานบั๊กได้ที่ GitHub issues
พฤติกรรมของโมเดลตามที่สรุปใน FAQ
- Pretzel ใช้ AI หลายโมเดลตามลักษณะงาน
- โมเดลเริ่มต้นคือ GPT-4o
- ถูกมองว่ามีสมดุลที่ดีระหว่างความเร็วและคุณภาพ
- หากใช้ API key ของตัวเอง สามารถเปลี่ยนได้ใน Pretzel Settings
- การเติมโค้ดแบบอินไลน์ใช้ Mistral Codestral
- ใช้เป็นโมเดลที่เหมาะกับงานเติมโค้ด
- เป็นโมเดลขนาด 22B พารามิเตอร์และให้ประสิทธิภาพที่รวดเร็ว
- หากใช้ API key ของตัวเองและไม่ได้ให้ Mistral API key ระบบจะใช้ GPT-4o สำหรับการเติมโค้ดแบบอินไลน์ด้วย
- การรองรับโมเดลโลคัลและ Anthropic Claude ยังอยู่ระหว่างการทดลองต่อเนื่อง โดย Claude อยู่ลำดับต้น ๆ ของรายการความสำคัญ
โร้ดแมป
- โร้ดแมปของ Pretzel มีฟีเจอร์ต่อไปนี้
- ความสามารถในการสร้าง·ทำความเข้าใจโค้ดด้วย AI แบบเนทีฟ คล้าย Cursor
- การทำงานร่วมกันแบบเรียลไทม์ พร้อม pair programming, คอมเมนต์ และประวัติเวอร์ชัน
- การรองรับ SQL ทั้งใน code cell และ SQL IDE แบบแยกอิสระ
- ตัวสร้างการวิเคราะห์เชิงภาพบนพื้นฐาน pretzelai_visual
- ประสบการณ์การเขียนโค้ดแบบคล้าย VSCode ด้วย Monaco
- การสร้างและแชร์แดชบอร์ดจาก Jupyter notebook ได้ในคลิกเดียว
- สามารถส่งคำขอฟีเจอร์ได้ทาง GitHub issues หรืออีเมล
- ทีมมีสมาชิกสองคน และต้องการใช้ฟีดแบ็กมาจัดลำดับความสำคัญของโร้ดแมป
ความเป็นส่วนตัว การเก็บข้อมูล และการจัดเก็บ
- Pretzel ไม่เก็บ ข้อมูลส่วนบุคคล
- ใช้ telemetry เริ่มต้นเฉพาะกับฟีเจอร์ AI เท่านั้น
- ตัวอย่างคืออีเวนต์ที่มีคนกด Ask AI
- ผู้ใช้จะเชื่อมโยงกับเพียง anonymous ID เท่านั้น
- หากอนุญาตคุกกี้ จะช่วยให้ระบบจดจำเป็นผู้ใช้นิรนามคนเดิมข้ามหลาย browser session ได้
- หากไม่อนุญาตคุกกี้ ทุกครั้งที่เปิดเบราว์เซอร์จะถูกมองเป็นผู้ใช้นิรนามคนใหม่
- มีการเก็บพรอมป์ต์ของฟีเจอร์ AI แต่ ไม่เก็บคำตอบ
- ปิด prompt telemetry ได้ที่
Settings > Pretzel AI > Uncheck Prompt Telemetry - ไม่เก็บโค้ดไม่ว่าในกรณีใด
- แม้จะใช้เซิร์ฟเวอร์ AI บนคลาวด์ของ Pretzel สำหรับการเติมโค้ด ก็จะไม่เก็บโค้ด
- หากใช้เวอร์ชันโฮสต์อย่าง pretzelai.app จะมีการสร้างผู้ใช้โดยอิงจากอีเมลแอดเดรส
- ผู้ใช้สามารถล็อกอินเพื่อลบข้อมูลที่บันทึกไว้บนเซิร์ฟเวอร์โฮสต์ได้
- เซิร์ฟเวอร์โฮสต์จะไม่ทำแบ็กอัปหรือสำเนาข้อมูล
- เซิร์ฟเวอร์โฮสต์เปิดให้ใช้ฟรี แต่จะลบข้อมูลและบัญชีหากผ่านไป 30 วันหลังล็อกอินครั้งล่าสุด
- หากต้องการลบบัญชีเร็วขึ้น ให้ส่งอีเมลไปที่
founders@withpretzel.comโดยใช้หัวข้อAccount Deletionแล้วระบบจะลบทันที
ไลเซนส์และเหตุผลที่เลือกฟอร์ก Jupyter
- โค้ดใหม่ของ Pretzel ใช้ไลเซนส์ AGPLv3
- โค้ดของ Jupyter ใช้ไลเซนส์ BSD-3
- เลือก AGPLv3 เพื่อป้องกันกรณีที่บุคคลที่สามนำโค้ดของ Pretzel ไปทำเวอร์ชันโฮสต์เพื่อขาย โดยไม่คืนประโยชน์กลับสู่ชุมชน
- หากนำโค้ดของ Pretzel ไปขายเป็น SaaS หรือรูปแบบอื่น ผู้แก้ไขจะต้องเปิดซอร์สโค้ดส่วนที่แก้ภายใต้ AGPLv3 ด้วย
- ระบุว่าในกรณีที่ใช้เป็นเพียงเครื่องมือภายในบริษัท แม้จะมีการแก้ไข AGPL ก็ไม่ได้บังคับให้ต้องเปิดเผยโค้ด
- เหตุผลที่เลือกฟอร์กแทนการไปมีส่วนร่วมกับ Jupyter โดยตรง คือเพื่อลดต้นทุนการย้ายให้ใกล้ศูนย์ที่สุด
- เดิมทีอยากสร้างใหม่ตั้งแต่ต้น แต่หลังคุยกับผู้เชี่ยวชาญด้านข้อมูลแล้วพบว่าการย้ายไปใช้เครื่องมือใหม่เป็นเรื่องยาก
- Jupyter เป็นผลิตภัณฑ์ที่สุกงอมแล้ว และทีม Pretzel ก็กำลังปล่อยฟีเจอร์ใหม่อย่างรวดเร็ว
- ทีมระบุว่าข้อเสียของการฟอร์กคือใช้เวลามากในการทำความเข้าใจ ecosystem ของ Jupyter, codebase หลายชุด, ขั้นตอนรีลีสที่ซับซ้อน และ API ที่หลากหลาย
Pretzel AI เวอร์ชันก่อนหน้าและแผนสร้างรายได้
- เครื่องมือจัดการข้อมูลเชิงภาพในเบราว์เซอร์ซึ่งเคยเป็น Pretzel AI อยู่ในโฟลเดอร์
pretzelai_visual - ดูข้อมูลที่เกี่ยวข้องได้ที่ PR #76
- มีแผนสร้างรายได้ผ่านการขายเวอร์ชันโฮสต์สำหรับองค์กร
- เวอร์ชันโฮสต์สำหรับองค์กรอาจมีฟีเจอร์เฉพาะบริษัทที่ผู้ใช้ทั่วไปไม่จำเป็นต้องใช้
- การควบคุมการเข้าถึงข้อมูล
- ตัวเชื่อมต่อ data source
- การเชื่อมต่อกับ GitHub
- แดชบอร์ดที่โฮสต์และแชร์ได้
- คอมพิวต์แบบขยายได้ตามต้องการสำหรับงานข้อมูลขนาดใหญ่
- ระบุว่าจะไม่ย้อนกลับไปเปลี่ยนเวอร์ชันส่วนบุคคลของ Pretzel ให้เป็นแบบเสียเงินในภายหลัง
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
Jupyter Notebook ที่ผสาน AI มีอยู่ค่อนข้างมากแล้ว แม้ความเป็นโอเพนซอร์สจะน้อยหรือไม่มีเลย แต่ก็ได้รับการปรับปรุงซ้ำมานานกว่าหนึ่งปี จึงสุกงอมกว่าในบางแง่
https://noteable.io/ เคยค่อนข้างดี แต่หายไปหลังจากถูกซื้อกิจการเพื่อดึงทีมงาน (acqui-hire), ส่วน https://deepnote.com เด่นเรื่องการผสาน AI และการทำงานร่วมกันแบบเรียลไทม์
https://github.com/jupyterlab/jupyter-ai เป็นส่วนขยายโอเพนซอร์สมาตรฐานด้าน generative AI สำหรับ Jupyter ที่ทำโดยฝั่ง Amazon ถือว่าดี และตัว JupyterLab เองตอนนี้การทำงานร่วมกันแบบเรียลไทม์ก็สุกงอมพอสมควรแล้ว
https://colab.google/ ผสาน AI ได้ยอดเยี่ยม แต่ใช้ได้เฉพาะโมเดลที่ Google โฮสต์เท่านั้น
https://cocalc.com มีการผสาน AI ที่กว้างขวางรองรับโมเดลโฮสต์หลัก ๆ แทบทั้งหมด รวมถึงการทำงานร่วมกันแบบเรียลไทม์ และส่วนใหญ่ฟรีหรือคิดค่าบริการตามการใช้งาน ผมเป็นผู้ร่วมพัฒนา
VS Code ก็มี Jupyter Notebook ในตัวที่ยอดเยี่ยมอย่างที่คนอื่นพูดกัน แล้วมีอะไรที่ตกหล่นไปอีกไหม?
https://deepnote.com น่าเสียดายที่เป็น ซอร์สปิด จึงรันในเครื่องหรือแก้ไขไม่ได้ และต้องเรียนรู้อินเทอร์เฟซใหม่เพื่อย้ายไปใช้
https://github.com/jupyterlab/jupyter-ai ผมก็พูดถึงในบทความแล้ว แต่จากประสบการณ์ของผม ประสบการณ์ผู้ใช้และฟีเจอร์ตามหลังสิ่งที่เราสร้างไว้แล้วค่อนข้างมาก อย่างไรก็ดี ข้อดีคือรองรับโมเดลมากกว่า และโค้ดเบสแก้ไขได้ง่ายกว่ามาก
https://colab.google/ ก็คล้าย Deepnote คือเป็นซอร์สปิด และถ้าจะใช้ในบริษัท ดูเหมือนต้องใช้เวอร์ชัน Enterprise เพราะต้องมี data connector และการรับประกันการซัพพอร์ต แต่ทำงานได้เฉพาะบน GCP ซึ่งอาจเป็นจุดอ่อนร้ายแรงสำหรับองค์กรที่เน้น AWS
https://cocalc.com ผมยังไม่เคยลองใช้ แต่ดูเป็นโปรเจกต์ที่ยอดเยี่ยมและตั้งใจจะไปดู จากความประทับใจแรก อินเทอร์เฟซดูค่อนข้างต่างจาก Jupyter และความแตกต่างใหญ่คือเป้าหมายของเราคือไปหาผู้ใช้ในที่ที่พวกเขาอยู่แล้ว นั่นคือ Jupyter
VSCode อย่างที่พูดไว้ในที่อื่น ฟีเจอร์ที่เรากำลังทำเน้นไปที่ เวิร์กโฟลว์การวิเคราะห์ มากกว่า VSCode ก็มีฟีเจอร์ AI อยู่แล้ว แต่เมื่อเพิ่มฟีเจอร์ในโรดแมปเข้ามา น่าจะออกมาค่อนข้างต่างกัน
การรองรับ Jupyter ของ VS Code และ Cursor ดีมาก จนผมรู้สึกว่าสำหรับเวิร์กโฟลว์ของผม ทางนี้ดีกว่าโซลูชันเฉพาะสำหรับ Jupyter Notebook มาก
https://github.com/marimo-team/marimo
การใช้งานที่ทีมและผู้ร่วมสร้างทำออกมานั้นยอดเยี่ยม เรียบง่ายแต่ได้ผล และผมชอบที่ยังคงไว้เป็น โอเพนซอร์ส ต่างจาก Show HN อื่น ๆ ที่เอางานโอเพนซอร์สไปปิด แล้วปรับนิดหน่อยก่อนอ้างว่าสร้างของสุดยอดขึ้นมา
สงสัยว่าต่อไปจะขยายฟีเจอร์อื่น ๆ ต่อหรือไม่ ฟีเจอร์อย่าง Copilot กับแชตนั้นดี แต่ผู้ใช้สมัยนี้น่าจะคาดหวังให้ฟีเจอร์แบบนี้มีมาใน IDE เป็นพื้นฐาน หรือมีให้ผ่านส่วนขยาย
ถ้าอีกฝ่ายไม่ใช่บริษัทที่ใหญ่มากและเป็นที่รู้จักดี ผมคงไม่ฝากข้อมูลบริษัทไว้กับทางเลือก Jupyter แบบซอร์สปิด
ผมเห็นด้วยว่า IDE ควรมีฟีเจอร์เหล่านี้ แต่ IDE ที่รองรับ Jupyter Notebook มีแค่ VSCode กับ PyCharm และส่วนขยาย AI ส่วนใหญ่สำหรับ VSCode ก็ไม่ได้ปรับมาให้เหมาะกับงานโน้ตบุ๊ก เช่น เพื่อนผมบอกว่า GitHub Copilot มีปัญหากับการเติมโค้ดข้ามเซลล์ต่าง ๆ
นี่เป็นแค่จุดเริ่มต้น และเราตั้งใจจะสร้าง ฟีเจอร์เฉพาะด้านการวิเคราะห์ข้อมูล อีกมากที่ไม่มีใน IDE ใด ๆ ดังนั้นผมคิดว่ายังมีพื้นที่มากพอสำหรับเครื่องมือแบบนี้
ผม Ramon ผู้ร่วมก่อตั้งอีกคนของ Pretzel จากฟีดแบ็กช่วงแรก ตอนนี้เรากำลังดำเนินการเพิ่มการรองรับ LLM แบบโลคัล และ Claude Sonnet 3.5 อยู่แล้ว ถ้ามีคำถามก็พร้อมตอบ
LocalAI: https://github.com/mudler/LocalAI
ตัวอย่างเช่น promptfoo และ chainforge มีเวิร์กโฟลว์สำหรับทำงานกับ LLM หลายตัว
Promptfoo มีคอนฟิก YAML สำหรับตั้งค่า prompt และ provider: https://www.promptfoo.dev/docs/configuration/guide/
ควรดูด้วยว่า system prompt คืออะไร และ system prompt ทำให้การวิเคราะห์เอนเอียงได้อย่างไร
/? "system prompt" https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
Github Copilot เป็นเครื่องมือที่มีประโยชน์ที่สุดที่เจอมานาน และการใช้มันใน Jupyter Notebooks ได้ก็ดีมาก เป็นฟีเจอร์ที่รอมาค่อนข้างนาน ทำได้ยอดเยี่ยม
เราใช้เวลาอ้างอิงส่วนขยาย neovim GH Copilot [1] และ Zed [2] เพื่อ reverse engineer การใช้งาน แต่ท้ายที่สุดมันไม่เสถียรและยุ่งยากเกินไป
ระหว่างนั้นเรายังค้นพบด้วยว่า Codestral ต่างจาก LLM ทั่วไปตรงที่มีเวอร์ชัน fill-in-the-middle ทำให้ได้สมดุลระหว่างความเร็วและคุณภาพที่ดีกว่า จึงตัดสินใจใช้ Codestral ได้แรงบันดาลใจจาก continue.dev ที่ใช้ Codestral สำหรับ tab completion
[1] https://github.com/github/copilot.vim
[2] https://zed.dev/blog/copilot
สงสัยว่ามีข้อจำกัดอะไรที่ทำให้ต้องทำเป็น fork แทนที่จะทำเป็น extension
ตอนแรกคิดจะสร้างเครื่องมือใหม่ตั้งแต่ศูนย์ แต่การทำให้ผู้ใช้ย้ายมาใช้เป็นเรื่องยากมาก จึงต้องไปยังที่ที่ผู้ใช้อยู่แล้ว นั่นคือ Jupyter
ถ้าดูเฉพาะฟีเจอร์นี้ แม้จะยาก แต่ก็ทำเป็น extension ได้ และการทดลองช่วงแรกก็เริ่มจาก extension เช่นกัน เพียงแต่คงยากที่จะควบคุมพฤติกรรมหลักบางอย่างของ Jupyter อย่างละเอียด เช่น การสร้างโฟลเดอร์ซ่อนเพื่อเก็บไฟล์แบบที่ทำอยู่ตอนนี้ ถึงอย่างนั้นผมคิดว่าเวอร์ชันที่ทำงานได้ 95% ของ Pretzel ก็น่าจะทำเป็น Jupyter extension ได้
เหตุผลที่ใหญ่กว่านั้นคือ ในอนาคตเราอยากเปลี่ยนโมเดลการรันโค้ดทั้งหมดให้เป็นแบบ DAG-based เพื่อสร้าง notebook ที่ทำซ้ำได้ เช่น คล้ายกับ https://plutojl.org/
เช่นเดียวกัน เราอยากถอด CodeMirror ออกทั้งหมด แล้วแทนที่ด้วย Monaco ซึ่งเป็นเอนจินแก้ไขหลักของ VSCode เพื่อให้ประสบการณ์แบบ IDE ภายใน Jupyter แต่งานแบบนี้ทำด้วย extension ไม่ได้
ไม่เข้าใจว่าคำว่า “GitHub Copilot ยังไม่รองรับใน Jupyter” หมายความว่าอะไร ผมใช้ Copilot กับ ไฟล์ .ipynb ใน VS Code มานานกว่าหนึ่งปีแล้ว
จากที่ลองใช้ Codestral เราได้ completion ที่ดีพอ ๆ กับ Copilot บางครั้งดีกว่า ด้วยความเร็วและต้นทุนที่ดีกว่ามาก
editor พวกนี้ทั้งหมดเน้นที่การเขียนโปรแกรม มีคำแนะนำสำหรับ การจดโน้ต ที่ทั่วไปกว่านี้ไหม?
อยากทำงานอย่างการจัดระเบียบโน้ตที่หยาบมาก ๆ, จัดรูปแบบใหม่ให้เข้ากับเทมเพลตทั่วไป, ใช้การเปลี่ยนแปลงตาม prompt, และถามคำถามกับชุดโน้ต
ไม่ค่อยเข้าใจว่าทำไมสิ่งนี้ถึงน่าสนใจ ถ้าต้องการการผสาน AI จริง ๆ ใช้ VSCode กับ Jupyter ก็เข้าถึง ecosystem ของ extension ทั้งหมดได้ ไอเดียไม่ได้แย่ แต่ดูเหมือนยังขาดจุดประสงค์
ผลงานนี้แทบจะเป็นส่วนขยายของ Jupyter (https://github.com/pretzelai/pretzelai/tree/main/packages/pr...) เลย สงสัยว่าทำไมถึงไม่ทำเป็น ส่วนขยาย เหมือนอย่างอื่น ๆ ใน https://github.com/jupyterlab-contrib แทนที่จะ hard fork JupyterLab
พูดสั้น ๆ คือ ฟีเจอร์ในตอนนี้ก็น่าจะทำเป็นส่วนขยายได้ แน่นอนว่าเราได้เปลี่ยนแปลงการทำงานหลักของ Jupyter ไปหลายอย่างแล้วด้วย
แต่ใน roadmap มีงานที่จะเปลี่ยนโมเดลการรันโค้ดเองในระดับที่ใหญ่กว่านี้มาก ซึ่งทำด้วยส่วนขยายไม่ได้