| return parameters | return parameters | ||||
| def get_llm_model_info(model=OLLAMA_MODEL): | def get_llm_model_info(model=OLLAMA_MODEL): | ||||
| """Extrait les informations du modèle LLM depuis Ollama.""" | |||||
| """ | |||||
| Extrait les informations du modèle LLM depuis Ollama, y compris le nom depuis la ligne FROM du Modelfile. | |||||
| @param model: Nom du modèle à interroger. | |||||
| @type model: str | |||||
| @return: Dictionnaire contenant les informations du modèle, ou None en cas d'erreur. | |||||
| @rtype: dict | None | |||||
| """ | |||||
| try: | try: | ||||
| # Chemin vers le fichier Modelfile (supposé être dans le même répertoire que le script) | |||||
| modelfile_path = os.path.join(os.path.dirname(__file__), "Modelfile") | |||||
| # Initialisation de model_name | |||||
| model_name = "none" | |||||
| # Lecture du fichier Modelfile pour extraire le nom du modèle | |||||
| if os.path.exists(modelfile_path): | |||||
| with open(modelfile_path, 'r', encoding='utf-8') as file: | |||||
| for line in file: | |||||
| if line.strip().startswith('FROM '): | |||||
| model_name = line.strip().split('FROM ')[1].strip() | |||||
| break | |||||
| # URL pour obtenir les informations du modèle | # URL pour obtenir les informations du modèle | ||||
| info_url = OLLAMA_URL.replace("/api/generate", "/api/show") | info_url = OLLAMA_URL.replace("/api/generate", "/api/show") | ||||
| payload = {"name": model} | payload = {"name": model} | ||||
| response = requests.post(info_url, json=payload) | response = requests.post(info_url, json=payload) | ||||
| if response.status_code == 200: | if response.status_code == 200: | ||||
| model_data = response.json() | model_data = response.json() | ||||
| # Gère le cas où model_data est une chaîne | # Gère le cas où model_data est une chaîne | ||||
| if isinstance(model_data, str): | if isinstance(model_data, str): | ||||
| model_data = json.loads(model_data) | model_data = json.loads(model_data) | ||||
| # Extrait les paramètres du template | # Extrait les paramètres du template | ||||
| parameters = model_data.get('parameters', '') | parameters = model_data.get('parameters', '') | ||||
| parsed_params = extract_parameters_from_template(parameters) | parsed_params = extract_parameters_from_template(parameters) | ||||
| # Extraction du nom depuis la ligne FROM | |||||
| modelfile_content = model_data.get('Modelfile', '') | |||||
| # Extraction des informations principales | # Extraction des informations principales | ||||
| info = { | info = { | ||||
| "temperature": parsed_params.get('temperature', model_data.get("temperature", "Not available")), | "temperature": parsed_params.get('temperature', model_data.get("temperature", "Not available")), | ||||
| "name": model_name, | |||||
| "num_ctx": parsed_params.get('num_ctx', "Not available"), | "num_ctx": parsed_params.get('num_ctx', "Not available"), | ||||
| "top_k": parsed_params.get('top_k', "Not available"), | "top_k": parsed_params.get('top_k', "Not available"), | ||||
| "top_p": parsed_params.get('top_p', "Not available"), | "top_p": parsed_params.get('top_p', "Not available"), | ||||
| "system": model_data.get("system", "Not available"), | "system": model_data.get("system", "Not available"), | ||||
| "modified_at": model_data.get("modified_at", "Not available"), | "modified_at": model_data.get("modified_at", "Not available"), | ||||
| } | } | ||||
| print(f"Informations du modèle récupérées : {info}") | |||||
| return info | return info | ||||
| else: | else: | ||||
| print(f"Erreur lors de la récupération du modèle : {response.text}") | print(f"Erreur lors de la récupération du modèle : {response.text}") | ||||
| else: | else: | ||||
| formatted_date = 'Not available' | formatted_date = 'Not available' | ||||
| return f"LLM Modèle: {OLLAMA_MODEL}<br//>\nSystem: {info['system']}<br//>\nTemperature: {info['temperature']}<br//>\nDate de modification: {formatted_date}" | |||||
| return f"LLM Modèle: {info['name']}<br//>\nDate de modification: {formatted_date}<br//>\nSystem: {info['system']}<br//>\nTemperature: {info['temperature']}" | |||||
| else: | else: | ||||
| return "Informations du modèle non disponibles" | return "Informations du modèle non disponibles" | ||||
| # Traitement des paragraphes complets | # Traitement des paragraphes complets | ||||
| for i, paragraph_text in enumerate(paragraphs, start=1): | for i, paragraph_text in enumerate(paragraphs, start=1): | ||||
| if( i > 2): break | |||||
| print(f"{15 * '-'} Traduction du paragraphe {i}/{len(paragraphs)}...") | print(f"{15 * '-'} Traduction du paragraphe {i}/{len(paragraphs)}...") | ||||
| try: | try: | ||||
| result = send_to_ollama(paragraph_text, target_lang=TARGET_LANGUAGE) | result = send_to_ollama(paragraph_text, target_lang=TARGET_LANGUAGE) |