Chatgpt ยังแสดงให้เห็นถึงความสามารถในการเป็นนักแปลที่มีความสามารถในการจัดการไม่เพียง แต่ภาษาทั่วไปเท่านั้น อย่างไรก็ตามมันอาจไม่ได้สร้างเอาต์พุตที่กำหนดขึ้นและปฏิบัติตามความสัมพันธ์แบบบรรทัดต่อบรรทัดซึ่งอาจรบกวนระยะเวลาของคำบรรยายแม้ว่าจะได้รับคำสั่งให้ทำตามคำแนะนำที่แม่นยำและตั้งค่าพารามิเตอร์ temperature แบบจำลองเป็น 0
ยูทิลิตี้นี้ใช้ OpenAI chatgpt API เพื่อแปลข้อความโดยเน้นเฉพาะการแปลตามบรรทัดโดยเฉพาะอย่างยิ่งสำหรับคำบรรยาย SRT นักแปลปรับการใช้โทเค็นให้เหมาะสมโดยการลบค่าใช้จ่าย SRT การจัดกลุ่มข้อความเป็นแบตช์ส่งผลให้เกิดการแปลความยาวโดยพลการโดยไม่ต้องใช้โทเค็นมากเกินไปในขณะที่มั่นใจว่าการจับคู่แบบหนึ่งต่อหนึ่งระหว่างอินพุตและเอาต์พุต
--experimental-structured-mode--experimental-use-full-context (CLI เท่านั้น)การอ้างอิง: https://github.com/openai/openai-quickstart-node#setup
>= 16.13.0 ต้องการ readme นี้จะถือว่าสภาพแวดล้อม bashgit clone https://github.com/Cerlancism/chatgpt-subtitle-translator && cd chatgpt-subtitle-translatornpm installchmod +x cli/translator.mjs.example.env ถึง .env cp .env.example .env.env ที่สร้างขึ้นใหม่ cli/translator.mjs --help
Usage: translator [options]
Translation tool based on ChatGPT API
ตัวเลือก:
--from <language>
ภาษาต้นทาง (ค่าเริ่มต้น: "")
--to <language>
ภาษาเป้าหมาย (ค่าเริ่มต้น: "ภาษาอังกฤษ")
-i, --input <file>
ข้อความต้นฉบับอินพุตพร้อมเนื้อหาของไฟล์นี้ในรูปแบบ .srt หรือข้อความธรรมดา
-o, --output <file>
ชื่อไฟล์เอาต์พุตค่าเริ่มต้นที่จะขึ้นอยู่กับชื่อไฟล์อินพุต
-p, --plain-text <text>
ข้อความต้นฉบับอินพุตด้วยอาร์กิวเมนต์ข้อความธรรมดานี้
-s, --system-instruction <instruction>
แทนที่เทมเพลตคำสั่งระบบพรอมต์ Translate ${from} to ${to} ด้วยข้อความธรรมดานี้โดยไม่สนใจ --from เลือกและ --to ตัวเลือก
--initial-prompts <prompts>
การแจ้งเตือนเริ่มต้นสำหรับการแปลใน JSON (ค่าเริ่มต้น: "[]" )
--no-use-moderator
อย่าใช้จุดสิ้นสุดการกลั่นกรอง OpenAI API
--moderation-model
(ค่าเริ่มต้น: "omni-moderation-latest" ) https://platform.openai.com/docs/models/moderation
--no-prefix-number
อย่านำหน้าบรรทัดที่มีดัชนีตัวเลข
--no-line-matching
อย่าบังคับใช้การจับคู่เอาต์พุตอินพุตปริมาณหนึ่งถึงหนึ่งบรรทัด
-l, --history-prompt-length <length>
ความยาวของประวัติพรอมต์เพื่อรักษาสำหรับชุดคำขอถัดไป (ค่าเริ่มต้น: 10)
-b, --batch-sizes <sizes> ขนาดแบทช์ของการเพิ่มคำสั่งซื้อสำหรับชิ้นพรอมต์การแปลในอาร์เรย์ JSON (ค่าเริ่มต้น: "[10,100]" )
จำนวนบรรทัดที่รวมอยู่ในพรอมต์การแปลแต่ละครั้งโดยมีการประเมินว่าอยู่ภายในขีด จำกัด โทเค็น ในกรณีของปริมาณบรรทัดเอาต์พุตที่ไม่ตรงกันจำนวนนี้จะลดลงทีละขั้นตอนตามค่าในอาร์เรย์ในที่สุดก็มาถึงหนึ่ง
ขนาดแบทช์ขนาดใหญ่โดยทั่วไปจะนำไปสู่การใช้โทเค็นที่มีประสิทธิภาพมากขึ้นและการแปลตามบริบทที่ดีขึ้น อย่างไรก็ตามปริมาณบรรทัดเอาต์พุตที่ไม่ตรงกันหรือเกินขีด จำกัด โทเค็นจะทำให้เกิดการสูญเสียโทเค็นซึ่งต้องมีการส่งกลับของชุดที่มีขนาดเล็กลง
--experimental-structured-mode [mode]
เปิดใช้งานการตอบสนองที่มีโครงสร้าง (ค่าเริ่มต้น: array , ตัวเลือก array , object )
--experimental-structured-mode array โครงสร้างอินพุตและเอาต์พุตเป็นรูปแบบอาร์เรย์ธรรมดา ตัวเลือกนี้กระชับกว่าเมื่อเทียบกับโหมดฐานแม้ว่าจะใช้โทเค็นมากกว่าเล็กน้อยต่อแบทช์--experimental-structured-mode object โครงสร้างทั้งอินพุตและเอาต์พุตลงในสคีมาวัตถุที่สร้างขึ้นตามแบบไดนามิกตามค่าอินพุต ตัวเลือกนี้มีความรัดกุมมากขึ้นและใช้โทเค็นน้อยลง แต่ต้องใช้ขนาดแบทช์ที่เล็กลงและอาจช้าและไม่น่าเชื่อถือ เนื่องจากความไม่น่าเชื่อถือมันอาจนำไปสู่การคืนค่าการส่งซ้ำมากขึ้นซึ่งอาจทำให้โทเค็นสูญเสียมากขึ้นในกระบวนการ --experimental-use-full-context
รวมบริบททั้งหมดของข้อมูลที่แปลให้ทำงานได้ดีด้วยการแคชที่รวดเร็ว
บรรทัดที่แปลต่อผู้ใช้และผู้ช่วยคู่ข้อความถูกหั่นบาง ๆ ตามที่กำหนดโดย --history-prompt-length (โดยค่าเริ่มต้น --history-prompt-length 10 ) ขอแนะนำให้ตั้งค่านี้ให้เป็นขนาดแบทช์ที่ใหญ่ที่สุด (โดยค่าเริ่มต้น --batch-sizes "[10,100]" ): --history-prompt-length 100
การเปิดใช้งานสิ่งนี้อาจเสี่ยงต่อการวิ่งเข้าไปในขีด จำกัด หน้าต่างบริบทของโมเดลโดยทั่วไป 128K แต่ควรเพียงพอสำหรับกรณีส่วนใหญ่
--log-level <level>
ระดับบันทึก (ค่าเริ่มต้น: debug , ตัวเลือก: trace , debug , info , warn , error , silent )
--silent
เช่นเดียวกับ --log-level silent
--quiet
เช่นเดียวกับ --log-level silent
ตัวเลือกเพิ่มเติมสำหรับ GPT:
-m, --model <model>"gpt-4o-mini" ) https://platform.openai.com/docs/api-reference/chat/create--stream-t, --temperature <temperature>0.3 ให้กำหนดได้มากขึ้นสำหรับการแปล (ค่าเริ่มต้น: 1 ) https://platform.openai.com/docs/api-reference/chat/create#chat-create-temperature--top_p <top_p>--presence_penalty <presence_penalty>--frequency_penalty <frequency_penalty--logit_bias <logit_bias>cli/translator.mjs --plain-text "你好"เอาต์พุตมาตรฐาน
Hello.
cli/translator.mjs --stream --to " Emojis " --temperature 0 --plain-text " $( curl ' https://api.chucknorris.io/jokes/0ECUwLDTTYSaeFCq6YMa5A ' | jq .value ) "อาร์กิวเมนต์
Chuck Norris can walk with the animals, talk with the animals; grunt and squeak and squawk with the animals... and the animals, without fail, always say 'yessir Mr. Norris'.
เอาต์พุตมาตรฐาน
????♂️??????????????️??️❗️??????=???????????????????=??.
cli/translator.mjs --stream --system-instruction " Scramble characters of words while only keeping the start and end letter " --no-prefix-number --no-line-matching --temperature 0 --plain-text " Chuck Norris can walk with the animals, talk with the animals; "เอาต์พุตมาตรฐาน
Cuhck Nroris can wakl wtih the aiamnls, talk wtih the aiamnls;
cli/translator.mjs --stream --system-instruction " Unscramble characters back to English " --no-prefix-number --no-line-matching --temperature 0 --plain-text " Cuhck Nroris can wakl wtih the aiamnls, talk wtih the aiamnls; "เอาต์พุตมาตรฐาน
Chuck Norris can walk with the animals, talk with the animals;
cli/translator.mjs --stream --temperature 0 --input test/data/test_cn.txtไฟล์อินพุต: ทดสอบ/data/test_cn.txt
你好。
拜拜!
เอาต์พุตมาตรฐาน
Hello.
Goodbye!
cli/translator.mjs --stream --temperature 0 --input test/data/test_ja_small.srtไฟล์อินพุต: ทดสอบ/data/test_ja_small.srt
1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
おはようございます。
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
お元気ですか?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
はい、元気です。
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
今日は天気がいいですね。
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
はい、とてもいい天気です。ไฟล์เอาต์พุต: ทดสอบ/data/test_ja_small.srt.out_english.srt
1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
Good morning.
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
How are you?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
Yes, I'm doing well.
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
The weather is nice today, isn' t it?
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
Yes, it's very nice weather. คำแนะนำระบบ
โทเค็น: 5
Translate Japanese to English
| ป้อนข้อมูล | แจ้ง | เปลี่ยนรูป | เอาท์พุท |
|---|---|---|---|
โทเค็น: | โทเค็น: | โทเค็น: | โทเค็น: |
1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
おはようございます。
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
お元気ですか?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
はい、元気です。
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
今日は天気がいいですね。
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
はい、とてもいい天気です。 | | | 1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
Good morning.
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
How are you?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
Yes, I'm doing well.
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
The weather is nice today, isn' t it?
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
Yes, it's very nice weather. |
TODO : การวิเคราะห์เพิ่มเติม
5 SRT บรรทัด:
ทดสอบ/data/test_ja_small.srt
299362276 30 SRT บรรทัด:
ทดสอบ/data/test_ja.srt
16256719[5, 10] รวมถึงบริบททางประวัติศาสตร์สูงสุด 10 บริบท:1036