mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29:06 +00:00
* fix: refactor modal API key configuration for better separation of concerns - Split generic MODAL_API_KEY into service-specific keys: - TRANSCRIPT_API_KEY for transcription service - DIARIZATION_API_KEY for diarization service - TRANSLATE_API_KEY for translation service - Remove deprecated *_MODAL_API_KEY settings - Add proper validation to ensure URLs are set when using modal processors - Update README with new configuration format BREAKING CHANGE: Configuration keys have changed. Update your .env file: - TRANSCRIPT_MODAL_API_KEY → TRANSCRIPT_API_KEY - LLM_MODAL_API_KEY → (removed, use TRANSCRIPT_API_KEY) - Add DIARIZATION_API_KEY and TRANSLATE_API_KEY if using those services * fix: update Modal backend configuration to use service-specific API keys - Changed from generic MODAL_API_KEY to service-specific keys: - TRANSCRIPT_MODAL_API_KEY for transcription - DIARIZATION_MODAL_API_KEY for diarization - TRANSLATION_MODAL_API_KEY for translation - Updated audio_transcript_modal.py and audio_diarization_modal.py to use modal_api_key parameter - Updated documentation in README.md, CLAUDE.md, and env.example * feat: implement auto/modal pattern for translation processor - Created TranscriptTranslatorAutoProcessor following the same pattern as transcript/diarization - Created TranscriptTranslatorModalProcessor with TRANSLATION_MODAL_API_KEY support - Added TRANSLATION_BACKEND setting (defaults to "modal") - Updated all imports to use TranscriptTranslatorAutoProcessor instead of TranscriptTranslatorProcessor - Updated env.example with TRANSLATION_BACKEND and TRANSLATION_MODAL_API_KEY - Updated test to expect TranscriptTranslatorModalProcessor name - All tests passing * refactor: simplify transcript_translator base class to match other processors - Moved all implementation from base class to modal processor - Base class now only defines abstract _translate method - Follows the same minimal pattern as audio_diarization and audio_transcript base classes - Updated test mock to use _translate instead of get_translation - All tests passing * chore: clean up settings and improve type annotations - Remove deprecated generic API key variables from settings - Add comments to group Modal-specific settings - Improve type annotations for modal_api_key parameters * fix: typing * fix: passing key to openai * test: fix rtc test failing due to change on transcript It also correctly setup database from sqlite, in case our configuration is setup to postgres. * ci: deactivate translation backend by default * test: fix modal->mock * refactor: implementing igor review, mock to passthrough
87 lines
1.8 KiB
Markdown
87 lines
1.8 KiB
Markdown
# Reflector GPU implementation - Transcription and LLM
|
|
|
|
This repository hold an API for the GPU implementation of the Reflector API service,
|
|
and use [Modal.com](https://modal.com)
|
|
|
|
- `reflector_diarizer.py` - Diarization API
|
|
- `reflector_transcriber.py` - Transcription API
|
|
- `reflector_translator.py` - Translation API
|
|
|
|
## Modal.com deployment
|
|
|
|
Create a modal secret, and name it `reflector-gpu`.
|
|
It should contain an `REFLECTOR_APIKEY` environment variable with a value.
|
|
|
|
The deployment is done using [Modal.com](https://modal.com) service.
|
|
|
|
```
|
|
$ modal deploy reflector_transcriber.py
|
|
...
|
|
└── 🔨 Created web => https://xxxx--reflector-transcriber-web.modal.run
|
|
|
|
$ modal deploy reflector_llm.py
|
|
...
|
|
└── 🔨 Created web => https://xxxx--reflector-llm-web.modal.run
|
|
```
|
|
|
|
Then in your reflector api configuration `.env`, you can set these keys:
|
|
|
|
```
|
|
TRANSCRIPT_BACKEND=modal
|
|
TRANSCRIPT_URL=https://xxxx--reflector-transcriber-web.modal.run
|
|
TRANSCRIPT_MODAL_API_KEY=REFLECTOR_APIKEY
|
|
|
|
DIARIZATION_BACKEND=modal
|
|
DIARIZATION_URL=https://xxxx--reflector-diarizer-web.modal.run
|
|
DIARIZATION_MODAL_API_KEY=REFLECTOR_APIKEY
|
|
|
|
TRANSLATION_BACKEND=modal
|
|
TRANSLATION_URL=https://xxxx--reflector-translator-web.modal.run
|
|
TRANSLATION_MODAL_API_KEY=REFLECTOR_APIKEY
|
|
```
|
|
|
|
## API
|
|
|
|
Authentication must be passed with the `Authorization` header, using the `bearer` scheme.
|
|
|
|
```
|
|
Authorization: bearer <REFLECTOR_APIKEY>
|
|
```
|
|
|
|
### LLM
|
|
|
|
`POST /llm`
|
|
|
|
**request**
|
|
```
|
|
{
|
|
"prompt": "xxx"
|
|
}
|
|
```
|
|
|
|
**response**
|
|
```
|
|
{
|
|
"text": "xxx completed"
|
|
}
|
|
```
|
|
|
|
### Transcription
|
|
|
|
`POST /transcribe`
|
|
|
|
**request** (multipart/form-data)
|
|
|
|
- `file` - audio file
|
|
- `language` - language code (e.g. `en`)
|
|
|
|
**response**
|
|
```
|
|
{
|
|
"text": "xxx",
|
|
"words": [
|
|
{"text": "xxx", "start": 0.0, "end": 1.0}
|
|
]
|
|
}
|
|
```
|