Files
ai-typewriter/README.md
T

124 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ai-typewriter
Application Python qui lit la dernière entrée texte du presse-papier avec un raccourci global, l'envoie à un modèle IA, puis remplace chaque pression de touche suivante par le caractère suivant de la réponse.
## Fonctionnement
1. L'utilisateur copie manuellement le texte à envoyer à l'IA.
2. Raccourci global par défaut : `Ctrl+Alt+A`.
3. L'application lit directement la dernière entrée du presse-papier, sans simuler `Ctrl+C`.
4. Le texte capturé est journalisé puis envoyé à Ollama ou Gemini avec le system prompt strict :
> Réponds directement et de manière ultra-concise. Aucune phrase d'introduction, aucune salutation, aucun formatage superflu. Uniquement la réponse brute.
5. Le temps de génération de la réponse est journalisé.
6. Quand la réponse arrive, le premier caractère est écrit automatiquement.
7. Le mode dactylographie s'active ensuite : chaque touche physique est interceptée et remplacée par le prochain caractère de la réponse.
8. Le hook clavier est libéré automatiquement après le dernier caractère.
## Installation depuis les sources
```bash
python -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
cp config.json.template config.json
python main.py
```
Sous Linux, le paquet `keyboard` nécessite souvent les droits root ou l'accès aux périphériques `/dev/input`. Sous Windows, lancez l'exécutable dans une session utilisateur normale.
## Configuration
Copiez `config.json.template` vers `config.json` puis adaptez :
```json
{
"provider": "ollama",
"model": "llama3.1",
"api_key": "",
"server_url": "http://localhost:11434",
"hotkey": "ctrl+alt+a",
"request_timeout_seconds": 300,
"math_text_format": "word_equation"
}
```
### Ollama
```json
{
"provider": "ollama",
"model": "llama3.1",
"server_url": "http://localhost:11434"
}
```
### Gemini
```json
{
"provider": "gemini",
"model": "gemini-1.5-flash",
"api_key": "VOTRE_CLE",
"server_url": "https://generativelanguage.googleapis.com"
}
```
### Timeout IA
`request_timeout_seconds` vaut `300` par défaut. Si Ollama charge un gros modèle ou répond lentement, augmentez cette valeur. Mettez `0` pour désactiver le timeout côté application.
### Formatage mathématique Word
`math_text_format` vaut `word_equation` par défaut. Dans ce mode, les segments mathématiques comme `z_1`, `x^2`, `\alpha` ou `z_1 = x + iy` sont injectés dans Word comme de vraies équations :
1. l'application envoie `Alt+=` ;
2. elle tape l'expression en syntaxe UnicodeMath Word ;
3. elle envoie `Espace` pour laisser Word convertir ;
4. elle sort de l'objet équation avec `Flèche droite`.
Exemple :
```text
On pose z_1 = x + iy.
```
est injecté comme texte normal `On pose `, puis une équation Word `z_1 = x + iy`, puis le point final.
Modes disponibles :
- `word_equation` : crée des objets Équation Word via `Alt+=` pour les segments mathématiques détectés.
- `unicode` : transforme `z_1`, `x^2`, `\alpha`, etc. en texte Unicode (`z₁`, `x²`, `α`) sans objet équation.
- `plain` : injecte la réponse exactement telle que le modèle l'a renvoyée.
## Compilation
### Windows
Après clonage du dépôt, lancez simplement :
```bat
build.bat
```
Le script crée `.venv`, installe les dépendances, nettoie les anciens artefacts puis génère un exécutable Windows autonome :
```text
dist\ai-typewriter.exe
```
### Commande PyInstaller équivalente
```bash
pyinstaller --onefile --paths src --name ai-typewriter.exe main.py
```
L'exécutable est généré dans `dist/`. Le binaire n'est pas versionné Git.
## Test rapide sans hook clavier
```bash
python main.py --config config.json --ask "Résume: bonjour tout le monde"
```