איך זה עובד, ומה זה עדיין אינו יכול לעשות
BetterTranslator מריץ מודל תרגום על המחשב שלכם. עמוד זה מתאר מה היישום עושה היום, ומסמן מה נבנה אך טרם הושלם.
מה זה
יישום תרגום שולחני ל־Windows לצוותי תוכנה. הוא מתרגם מילים, משפטים ומסמכים שלמים, ומאנדקס את הפרויקט שאליו תפנו אותו, כך שהניסוח המקובל נשמר. המודלים רצים באופן מקומי.
יישום WPF על .NET 10, נשלח כקובץ הפעלה עצמאי. הרצפה היא Windows 10 build 19041 ומעלה, ויעד הבנייה היחיד הוא win-x64.
שלוש דרכים פנימה, מנוע אחד
החלון, שורת הפקודה וממשק הכלים לסוכן אינם שלושה מימושים. שלושתם בונים את המשימה דרך אותה מפעלה, מריצים את אותן הגנות, וכותבים לאותה היסטוריית שיחה.
- החלון, שהוא היישום עצמו.
- שורת הפקודה bt, נטולת ממשק גרפי ובנויה לסקריפטים. קראו את מדריך הפקודות
- משטח הכלים לסוכנים, המדובר באמצעות Model Context Protocol. קראו את תיעוד הסוכן
מה חוזר
לכל פורמט יש ערובה משלו למה ששורד את הדרך הלוך ושוב. שום דבר אינו מעובד מחדש מעץ תחביר.
| פורמט | מה מובטח |
|---|---|
| JSON | מתורגם ערך אחר ערך, לעולם לא כגוש אחד. המפתחות לעולם אינם נשלחים למודל. כל תשובה נתפרת בחזרה על גבי הבתים שהערך שלה תפס, ולכן כל השאר בקובץ חוזר זהה. |
| Markdown | מנותח, ורק הפרוזה נשלחת, וכל תשובה נתפרת על הטקסט שהחליפה. כותרות, רשימות, טבלאות, ציטוטים, גושי קוד, יעדי קישורים ותמונות, HTML גולמי ו-front matter נשארים זהים בית אחר בית. טקסט הקישור והטקסט החלופי של התמונות מתורגמים. |
| כל קובץ טקסט אחר | שומר על מספר השורות שלו. |
| PDF, DOCX | נקרא באותם קוראים שהחלון משתמש בהם ונכתב בחזרה כטקסט, משום שאף אחד מהם אינו ניתן לכתיבה חוזרת במקום. קובץ בשם terms.pdf הופך ל-terms.pdf.cs.txt. |
אסימוני מציין מורמים אל מאחורי סמנים ממוספרים לפני שליחת הטקסט, ומוחזרים אחריה. הדבר חל על סוגריים מסולסלים, אסימונים בסגנון printf, תגיות דמויות HTML, כתובות URL, צבעים הקסדצימליים ושבירות שורה. אצווה שחוזרת שגויה מנוסה שוב ערך אחר ערך.
פורמט שאין לו קורא נדחה בשמו במקום להתעוות, וקובצי נעילה של Office מדולגים.
שפות
מרשם אחד של 51 שפות מזין את הבורר בחלון ואת רשימת השפות שהסוכן קורא. זו קבוצת השפות שניתן לבקש, לא הקבוצה שמודל נתון תומך בה.
כל שורה נושאת זמינות של נתמך, לא מאומת או לא נתמך עבור המודל הנבחר. EuroLLM מפרסם רשימת שפות בתוך קובץ המודל, ולכן שורותיו נפתרות לכאן או לכאן. TranslateGemma אינו מפרסם רשימה כזו, ולכן עבורו כל שורה מציגה לא מאומת, ושורה לא מאומתת נשארת ניתנת לבחירה.
עדיין אין בורר לשפת המקור, ולכן מניחים שהטקסט הנכנס הוא באנגלית.
מאמץ ומודלים
פקד המאמץ בוחר את המודל ואת תקציב הטוקנים שלו יחד. מהיר מריץ את EuroLLM עם תקציב קטן יותר, חשיבה מריצה את TranslateGemma 4B GGUF עם תקציב גדול יותר.
המאמץ גובר על בורר המודל שבהגדרות, שהוא רק גיבוי כאשר מודל המאמץ אינו מותקן. שני המודלים נמצאים לפי שם הקובץ, ולעולם לא לפי נתיב שהורכב ממזהה בקטלוג.
הקשר חינם, והמתג האחד שמשנה זאת
כברירת מחדל ההקשר של שיחה חינם. כל שליחה בונה את כל הפרומפט שלה מהטקסט של עצמה. שיחה ארוכה אינה עולה יותר משיחה חדשה, ואף שיחה אינה יכולה לדלוף לאחרת. נבדק מול המודל האמיתי: אותו משפט, שנשלח קר ושוב לאחר שמונים שליחות לא קשורות, חוזר זהה בית אחר בית.
תו הזיכרון שבתפריט הפלוס הוא המתג היחיד שמוסיף ידע על הפרויקט. הוא תורם את הזוגות הקודמים של השיחה הזו, קטעים מהפרויקט או מהתיקייה שאונדקסו, ואת מילון המונחים של הפרויקט, בתקרה של 3000 תווים.
מילון המונחים הצ׳כי שנשלח עם היישום הוא דוגמה מעובדת, לא ברירת מחדל. שום דבר אינו מוחל עד שתשמרו משלכם מתוך ההגדרות.
שני הממשקים האחרים חושפים את אותו רעיון אחרת. בממשק הסוכן הזיכרון הוא אפשרות בכלי הטקסט בלבד, והוא כבוי אלא אם ביקשו אותו. בשורת הפקודה הוא בהצטרפות מרצון עבור טקסט, ואילו קובץ או תיקייה מתורגמים תמיד עם זיכרון פעיל.
כשהמנוע מסרב
מערך הגנות רץ בכל שליחה ויכול לדחות תשובה. הרשומה אז אומרת זאת, נוקבת בשם השער שעצר אותה, ומציעה ניסיון חוזר.
הודעה של יותר משורה אחת עוברת בנתיב המסמכים יחידה אחר יחידה. שער שדוחה שורה אחת עולה באותה שורה, לא בהודעה כולה. ניסיון חוזר הוא הטלה מחדש עם זרע דגימה אחר. סביבת הריצה זורעת דטרמיניסטית, ולכן בקשה זהה מחזירה בתים זהים.
ההגנות יכולות לטעות, וכשהן טועות המשלם הוא הקורא. שני פגמים כאלה מתועדים, שניהם נמצאו בתרגום טקסט אמיתי שהודבק ושניהם תוקנו במה שההגנה מודדת.
היכן זה רץ, והיכן זה נשמר
ההסקה עוברת דרך BetterRuntime, ממשק C שטוח מעל llama.cpp, עם ספרייה עצמאית אחת לכל מנגנון עורפי. המודל נטען בתהליך בן מפוקח, משום שסביבת הריצה המקורית עלולה לקרוס באופן ששום מטפל מנוהל אינו יכול ליירט. שליחה שנתקלת בכך מפעילה תהליך בן חדש ומנסה שוב.
נתוני זמן הריצה יושבים תחת הפרופיל שלכם: %LOCALAPPDATA%\BetterTranslator
למה שהיישום שולח, ולמה שאינו שולח, יש עמוד משלו. קראו את עמוד האבטחה
מה לא הושלם
תיאור מנופח גרוע מתיאור קצר. כל פריט בנוי במידה מסוימת, ועל אף אחד מהם אי אפשר עדיין להסתמך.
- כל שלוש גרסאות סביבת הריצה בנויות, נמדדות ומחווטות, וכל אחת ניתנת להורדה מהמתקין או מהכרטיס שלה בהגדרות. רק נתיב המעבד הורץ. אף אחד משני נתיבי הפריקה ל־GPU לא נוסה על חומרה אמיתית.
- נתיב המסמכים הורץ עם מודל אמיתי על ארבעה מסמכי Markdown משורת הפקודה. הכפתור תרגם קובץ שבחלון טרם נצפה עם מודל מאחוריו.
- מצב סביבת העבודה Memory בנוי ונעול. הטווחים פרויקט ותיקייה נושאים מנעול, ובחירה בהם אינה עושה דבר.
- מפת האחזור עדיין לא נבנתה.
- אין בורר לשפת המקור.
- טרם פורסמה גרסה כלשהי, ולכן אין מה להתקין מאתר זה.