Skip to content
ეს გვერდი შეიქმნა და ითარგმნა ხელოვნური ინტელექტის დახმარებით. თუ შეამჩნევთ უზუსტობას, გთხოვთ, დაგვეხმარეთ გაუმჯობესებაში. GitHub-ზე რედაქტირება

მულტიმოდალური შინაარსის დამუშავება

PRX მხარს უჭერს მულტიმოდალურ შინაარსს -- გამოსახულებებს, აუდიოსა და ვიდეოს -- მის არხებსა და LLM პროვაიდერებში. მულტიმოდალური ქვესისტემა ამუშავებს შინაარსის ტიპის ამოცნობას, ფორმატის ტრანსკოდირებას, ზომის აღსრულებასა და შესაძლებლობების მოლაპარაკებას არხებსა და პროვაიდერებს შორის.

მიმოხილვა

როდესაც მომხმარებელი მედია დანართს (ფოტო, ხმოვანი შეტყობინება, დოკუმენტი) აგზავნის არხით, მულტიმოდალური პაიპლაინი:

  1. ამოიცნობს შინაარსის ტიპს მაგიური ბაიტებისა და ფაილის გაფართოების მიხედვით
  2. ამოწმებს შინაარსს ზომისა და ფორმატის შეზღუდვების მიხედვით
  3. ტრანსკოდირებს შინაარსს, თუ სამიზნე პროვაიდერი წყარო ფორმატს მხარს არ უჭერს
  4. აგზავნის შინაარსს LLM პროვაიდერზე საუბრის კონტექსტის ნაწილის სახით
  5. ამუშავებს მედიას პასუხში, თუ პროვაიდერი გამოსახულებებს ან აუდიოს გენერირებს
არხის შეყვანა                  პროვაიდერის გამოტანა
  │                                  │
  ▼                                  ▼
┌──────────────┐              ┌──────────────┐
│ შინაარსის    │              │ პასუხის      │
│ ტიპის ამოცნ.│              │ მედია        │
└──────┬───────┘              └──────┬───────┘
       │                             │
       ▼                             ▼
┌──────────────┐              ┌──────────────┐
│ ვალიდაცია   │              │ ტრანსკოდირება│
│ & ლიმიტები  │              │ (საჭიროებისას)│
└──────┬───────┘              └──────┬───────┘
       │                             │
       ▼                             ▼
┌──────────────┐              ┌──────────────┐
│ ტრანსკოდირება│              │ არხით        │
│ (საჭიროებისას)│              │ მიწოდება     │
└──────┬───────┘              └──────────────┘


┌──────────────┐
│ პროვაიდერზე │
│ გაგზავნა     │
└──────────────┘

მხარდაჭერილი შინაარსის ტიპები

გამოსახულებები

ფორმატიამოცნობაპროვაიდერზე გაგზავნაპროვაიდერიდან მიღება
JPEGმაგიური ბაიტები FF D8 FFდიახდიახ
PNGმაგიური ბაიტები 89 50 4E 47დიახდიახ
GIFმაგიური ბაიტები 47 49 46დიახ (პირველი ფრეიმი)არა
WebPRIFF ჰედერი + WEBPდიახდიახ
BMPმაგიური ბაიტები 42 4Dტრანსკოდირდება PNG-შიარა
TIFFმაგიური ბაიტები 49 49 ან 4D 4Dტრანსკოდირდება PNG-შიარა
SVGXML ამოცნობარასტერიზდება PNG-შიარა

აუდიო

ფორმატიამოცნობატრანსკრიფციაპროვაიდერის შეყვანა
OGG/OpusOGG ჰედერიდიახ (STT-ით)ტრანსკრიბირებული ტექსტი
MP3ID3/sync ჰედერიდიახ (STT-ით)ტრანსკრიბირებული ტექსტი
WAVRIFF + WAVEდიახ (STT-ით)ტრანსკრიბირებული ტექსტი
M4A/AACftyp boxდიახ (STT-ით)ტრანსკრიბირებული ტექსტი
WebMEBML ჰედერიდიახ (STT-ით)ტრანსკრიბირებული ტექსტი

ვიდეო

ფორმატიამოცნობადამუშავება
MP4ftyp boxსაკვანძო ფრეიმების + აუდიო ტრეკის ამოღება
WebMEBML ჰედერისაკვანძო ფრეიმების + აუდიო ტრეკის ამოღება
MOVftyp boxსაკვანძო ფრეიმების + აუდიო ტრეკის ამოღება

ვიდეო ფაილები იშლება საკვანძო ფრეიმ გამოსახულებებად და აუდიო ტრეკად. საკვანძო ფრეიმები იგზავნება როგორც გამოსახულებები, ხოლო აუდიო ტრანსკრიბირდება.

შინაარსის ტიპის ამოცნობა

ამოცნობა ორ-საფეხურიან მიდგომას იყენებს:

  1. მაგიური ბაიტები -- ფაილის პირველი 16 ბაიტი შემოწმდება ცნობილ ხელმოწერებთან
  2. ფაილის გაფართოება -- თუ მაგიური ბაიტები არასაკმარისია, ფაილის გაფართოება გამოიყენება როგორც სარეზერვო
  3. MIME ტიპის ჰედერი -- HTTP-ით მიღებული შინაარსისთვის, Content-Type ჰედერი გამოიკითხება

ამოცნობის შედეგი განსაზღვრავს, რომელი დამუშავების პაიპლაინი ამუშავებს შინაარსს.

კონფიგურაცია

toml
[multimodal]
enabled = true

[multimodal.images]
max_size_bytes = 20_971_520      # 20 MB
max_resolution = "4096x4096"     # მაქსიმალური სიგანე x სიმაღლე
auto_resize = true               # max_resolution-ის გადამეტებული გამოსახულებების ავტომატური ზომის შეცვლა
resize_quality = 85              # JPEG ხარისხი ზომაშეცვლილი გამოსახულებებისთვის (1-100)
strip_exif = true                # EXIF მეტამონაცემების წაშლა კონფიდენციალურობისთვის

[multimodal.audio]
max_size_bytes = 26_214_400      # 25 MB
max_duration_secs = 300          # 5 წუთი
stt_provider = "whisper"         # "whisper", "deepgram", ან "provider" (LLM პროვაიდერის STT-ის გამოყენება)
stt_model = "whisper-1"
stt_language = "auto"            # "auto" ენის ამოცნობისთვის, ან ISO 639-1 კოდი

[multimodal.video]
max_size_bytes = 104_857_600     # 100 MB
max_duration_secs = 120          # 2 წუთი
keyframe_interval_secs = 5       # ერთი საკვანძო ფრეიმის ამოღება ყოველ 5 წამში
max_keyframes = 20               # ამოსაღები საკვანძო ფრეიმების მაქსიმალური რაოდენობა
extract_audio = true             # აუდიო ტრეკის ტრანსკრიბირება

კონფიგურაციის მითითება

გამოსახულებები

ველიტიპინაგულისხმევიაღწერა
max_size_bytesu6420971520გამოსახულების ფაილის მაქსიმალური ზომა (20 MB)
max_resolutionString"4096x4096"გამოსახულების მაქსიმალური ზომები (WxH)
auto_resizebooltrueზომაგადაჭარბებული გამოსახულებების ავტომატური ზომის შეცვლა
resize_qualityu885JPEG ხარისხი ზომაშეცვლილი გამოსახულებებისთვის (1--100)
strip_exifbooltrueEXIF მეტამონაცემების წაშლა გამოსახულებებიდან

აუდიო

ველიტიპინაგულისხმევიაღწერა
max_size_bytesu6426214400აუდიო ფაილის მაქსიმალური ზომა (25 MB)
max_duration_secsu64300აუდიოს მაქსიმალური ხანგრძლივობა (5 წუთი)
stt_providerString"whisper"მეტყველებიდან ტექსტში პროვაიდერი
stt_modelString"whisper-1"STT მოდელის სახელი
stt_languageString"auto"ენის მინიშნება ტრანსკრიფციისთვის

ვიდეო

ველიტიპინაგულისხმევიაღწერა
max_size_bytesu64104857600ვიდეო ფაილის მაქსიმალური ზომა (100 MB)
max_duration_secsu64120ვიდეოს მაქსიმალური ხანგრძლივობა (2 წუთი)
keyframe_interval_secsu645წამები ამოღებულ საკვანძო ფრეიმებს შორის
max_keyframesusize20ამოსაღები საკვანძო ფრეიმების მაქსიმალური რაოდენობა
extract_audiobooltrueვიდეოს აუდიო ტრეკის ტრანსკრიბირება

პროვაიდერების შესაძლებლობები

ყველა LLM პროვაიდერი არ უჭერს მხარს ერთნაირ მედია ტიპებს. PRX ავტომატურად აწარმოებს შესაძლებლობების მოლაპარაკებას:

პროვაიდერიგამოსახულების შეყვანაგამოსახულების გამოტანააუდიო შეყვანამშობლიური მულტიმოდალური
Anthropic (Claude)დიახარაარა (ჯერ ტრანსკრიბირება)დიახ (ხედვა)
OpenAI (GPT-4o)დიახდიახ (DALL-E)დიახ (Whisper)დიახ
Google (Gemini)დიახდიახ (Imagen)დიახდიახ
Ollama (LLaVA)დიახარაარადიახ (ხედვა)
AWS Bedrockმოდელზე დამოკიდებულიმოდელზე დამოკიდებულიარამოდელზე დამოკიდებული

როდესაც პროვაიდერი მედია ტიპს მშობლიურად მხარს არ უჭერს, PRX სარეზერვო დამუშავებას იყენებს:

  • გამოსახულება მხარდაუჭერელია -- გამოსახულება აღიწერება ხედვის შესაძლებლობის მქონე მოდელით და აღწერა ტექსტის სახით იგზავნება
  • აუდიო მხარდაუჭერელია -- აუდიო ტრანსკრიბირდება კონფიგურირებული STT პროვაიდერით და ტრანსკრიპტი ტექსტის სახით იგზავნება
  • ვიდეო მხარდაუჭერელია -- საკვანძო ფრეიმები და აუდიო ტრანსკრიპტი კომპოზიტური შეტყობინების სახით იგზავნება

არხების მედია ლიმიტები

თითოეული არხი საკუთარ ფაილის ზომისა და ფორმატის შეზღუდვებს ადგენს:

არხიმაქსიმალური ატვირთვამაქსიმალური ჩამოტვირთვამხარდაჭერილი ფორმატები
Telegram50 MB20 MBგამოსახულებები, აუდიო, ვიდეო, დოკუმენტები
Discord25 MB (უფასო)25 MBგამოსახულებები, აუდიო, ვიდეო, დოკუმენტები
WhatsApp16 MB (მედია)16 MBJPEG, PNG, MP3, MP4, PDF
QQ20 MB20 MBგამოსახულებები, აუდიო, დოკუმენტები
DingTalk20 MB20 MBგამოსახულებები, აუდიო, დოკუმენტები
Lark25 MB25 MBგამოსახულებები, აუდიო, ვიდეო, დოკუმენტები
Matrixჰომსერვერზე დამოკიდებულიჰომსერვერზე დამოკიდებულიყველა გავრცელებული ფორმატი
Email25 MB (ტიპიური)25 MBყველა MIME დანართებით
CLIფაილური სისტემის ლიმიტიფაილური სისტემის ლიმიტიყველა ფორმატი

PRX არხის ლიმიტებს აღასრულებს პასუხის გაგზავნის მცდელობამდე. თუ გენერირებული გამოსახულება ან ფაილი არხის ლიმიტს აჭარბებს, ის იკუმშება ან ჩამოტვირთვის ბმული მიეწოდება.

ტრანსკოდირების პაიპლაინი

ფორმატის კონვერტაცის საჭიროებისას, PRX შემდეგ ტრანსკოდირების პაიპლაინს იყენებს:

  1. გამოსახულების ტრანსკოდირება -- ხორციელდება image კრეიტით (სუფთა Rust, გარე დამოკიდებულებების გარეშე)
  2. აუდიო ტრანსკოდირება -- ხორციელდება FFmpeg-ით, თუ დაყენებულია, სხვა შემთხვევაში გავრცელებული ფორმატებისთვის მშობლიურ დეკოდერებზე გადადის
  3. ვიდეო საკვანძო ფრეიმების ამოღება -- მოითხოვს FFmpeg-ს

FFmpeg-ის ამოცნობა

PRX ავტომატურად ამოიცნობს FFmpeg-ს გაშვებისას:

bash
prx doctor multimodal

გამოტანა:

Multimodal Support:
  Images: OK (native)
  Audio transcoding: OK (ffmpeg 6.1 detected)
  Video processing: OK (ffmpeg 6.1 detected)
  STT provider: OK (whisper-1 via OpenAI)

FFmpeg-ის დაყენების გარეშე, აუდიო ტრანსკოდირება და ვიდეოს დამუშავება შეზღუდულია მშობლიურად მხარდაჭერილი ფორმატებით.

შეზღუდვები

  • ვიდეოს დამუშავება მოითხოვს FFmpeg-ის სისტემაში დაყენებას
  • მსხვილ მედია ფაილებმა შეიძლება მნიშვნელოვნად გაზარდოს LLM ტოკენების მოხმარება (განსაკუთრებით მრავალი საკვანძო ფრეიმი)
  • ზოგიერთი პროვაიდერი დამატებით საკომისიოს იხდის ხედვის/მულტიმოდალური API გამოძახებებისთვის
  • რეალურ დროში აუდიო სტრიმინგი (ცოცხალი ხმოვანი საუბარი) ჯერ მხარდაუჭერელია
  • პროვაიდერებიდან გენერირებული გამოსახულებები (DALL-E, Imagen) ექვემდებარება პროვაიდერის შინაარსის პოლიტიკას
  • SVG რასტერიზაცია ბაზისურ რენდერერს იყენებს; რთული SVG-ები შეიძლება ზუსტად არ გამოისახოს

დაკავშირებული გვერდები

Released under the Apache-2.0 License.