Spaces:
Paused
Paused
| #coding: utf-8 | |
| # Standard libraries | |
| #import json | |
| #import re | |
| from os import getenv | |
| #from typing import Any | |
| #from typing import Dict | |
| #from typing import IO | |
| #from typing import List | |
| #from typing import Optional | |
| #from typing import Tuple | |
| #from typing import Union | |
| #from io import BytesIO | |
| # Third-party libraries | |
| import requests | |
| from openai import OpenAI | |
| #from pydub import AudioSegment | |
| def check_openai_api_key(api_key): | |
| import openai | |
| client = openai.OpenAI(api_key=api_key) | |
| try: | |
| client.models.list() | |
| except openai.AuthenticationError: | |
| return False | |
| else: | |
| return True | |
| class PRESET_MODELS: | |
| # for detect language with GPT-4o-mini and GPT-4o models: | |
| # meta-paramaters presets (check_level:(low, medium, high), deterministict: (maximum, medium, minimum)) | |
| def get_preset__detect_language(check_level: str = "medium", deterministic: str = "medium"): | |
| if check_level == "low": | |
| if deterministic == "maximum": | |
| return {"temperature": 0.1, "frequency_penalty": 0.5, "presence_penalty": 0.5} | |
| elif deterministic == "medium": | |
| return {"temperature": 0.2, "frequency_penalty": 0.5, "presence_penalty": 0.5} | |
| elif deterministic == "minimum": | |
| return {"temperature": 0.3, "frequency_penalty": 0.5, "presence_penalty": 0.5} | |
| elif check_level == "medium": | |
| if deterministic == "maximum": | |
| return {"temperature": 0.1, "frequency_penalty": 0.2, "presence_penalty": 0.2} | |
| elif deterministic == "medium": | |
| return {"temperature": 0.2, "frequency_penalty": 0.2, "presence_penalty": 0.2} | |
| elif deterministic == "minimum": | |
| return {"temperature": 0.3, "frequency_penalty": 0.2, "presence_penalty": 0.2} | |
| elif check_level == "high": | |
| if deterministic == "maximum": | |
| return {"temperature": 0.01, "frequency_penalty": 0.1, "presence_penalty": 0.1} | |
| elif deterministic == "medium": | |
| return {"temperature": 0.05, "frequency_penalty": 0.1, "presence_penalty": 0.1} | |
| elif deterministic == "minimum": | |
| return {"temperature": 0.1, "frequency_penalty": 0.1, "presence_penalty": 0.1} | |
| else: | |
| return {"temperature": 0.2, "frequency_penalty": 0.2, "presence_penalty": 0.2} | |
| def detect_language(input_text: str, temperature: float = 0.01, context_window: int = 128) -> str: | |
| """ | |
| Détecte la langue d'un texte donné. | |
| Args: | |
| input_text (str): Le texte dont il faut détecter la langue. | |
| temperature (float): La température pour le modèle de langage. Par défaut à 0.2. | |
| context_window (int): Longueur de la fenêtre de contexte à utiliser pour la détection. | |
| Returns: | |
| str: La langue détectée au format ISO-639-1. | |
| Raises: | |
| ValueError: Si la réponse de l'API est invalide. | |
| requests.RequestException: En cas d'erreur de communication avec l'API. | |
| """ | |
| system_prompt = ( | |
| "Agissez comme une fonction de détection de langue. " | |
| "Je fournirai du texte dans n'importe quelle langue, et vous détecterez sa langue. " | |
| "Fournissez le résultat de votre détection au format ISO-639-1. " | |
| "Votre réponse doit représenter l'argument `language` et ne contenir " | |
| "que sa valeur sous forme de chaîne. " | |
| "Fournir la langue d'entrée au format ISO-639-1 améliorera la précision et la latence." | |
| ) | |
| try: | |
| client = OpenAI(api_key=getenv("OPENAI_API_KEY")) | |
| ################# | |
| response = client.chat.completions.create( | |
| model="gpt-4o-mini", | |
| temperature=temperature, | |
| messages=[ | |
| { | |
| "role": "system", | |
| "content": system_prompt | |
| }, | |
| { | |
| "role": "user", | |
| "content": input_text | |
| } | |
| ], | |
| frequency_penalty=0.2, | |
| presence_penalty=0, | |
| max_tokens=context_window | |
| ) | |
| detected_language = response.choices[0].message.content | |
| if not detected_language: | |
| raise ValueError("La réponse de l'API est vide") | |
| return detected_language | |
| except requests.RequestException as e: | |
| raise requests.RequestException(f"Erreur de communication avec l'API : {str(e)}") | |
| except Exception as e: | |
| raise ValueError(f"Erreur inattendue lors de la détection de la langue : {str(e)}") | |
| if __name__ == "__main__": | |
| input_text = "Hello, how are you?" | |
| detected_language = detect_language(input_text) | |
| print(f"La langue détectée est : {detected_language}") | |
| input_text = "Bonjour, comment ça va?" | |
| detected_language = detect_language(input_text) | |
| print(f"La langue détectée est : {detected_language}") | |