ollama model added
This commit is contained in:
parent
cc1decc9ed
commit
6b9058a43f
54
main.py
54
main.py
@ -12,10 +12,54 @@ import zipfile
|
|||||||
import tempfile
|
import tempfile
|
||||||
from openpyxl.utils import get_column_letter
|
from openpyxl.utils import get_column_letter
|
||||||
from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
|
from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
|
||||||
|
from pydantic_ai import Agent
|
||||||
|
from pydantic_ai.models.openai import OpenAIModel
|
||||||
|
from pydantic_ai.providers.openai import OpenAIProvider
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
from typing import Optional
|
||||||
# Configure logging
|
# Configure logging
|
||||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
logging.basicConfig(level=None, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class TranslationOutput(BaseModel):
|
||||||
|
translated_text: str
|
||||||
|
async def translate_with_ollama(text: str, target_language: str, model_name: str = "llama3.1:latest") -> str:
|
||||||
|
"""Translate text using Ollama via PydanticAI
|
||||||
|
|
||||||
|
Args:
|
||||||
|
text: Text to translate
|
||||||
|
target_language: Target language code (e.g. 'fr', 'en')
|
||||||
|
model_name: Ollama model name (default: llama3:latest)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Translated text
|
||||||
|
"""
|
||||||
|
# Skip empty text
|
||||||
|
if not text or text.strip() == "":
|
||||||
|
return text
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Create agent with Ollama
|
||||||
|
ollama_model = OpenAIModel(
|
||||||
|
model_name=model_name, provider=OpenAIProvider(base_url='http://localhost:11434/v1')
|
||||||
|
)
|
||||||
|
agent = Agent(ollama_model, result_type=TranslationOutput,retries=2)
|
||||||
|
# Create the input
|
||||||
|
|
||||||
|
|
||||||
|
# Execute translation
|
||||||
|
result = await agent.run(
|
||||||
|
f"Translate this text to this language: {text} to {target_language}. Only return the translation, nothing else. NO ADDITIONAL TEXT.AND AVIOID Text to be translated,ADDITIONAL REMARKS,TRY TO understand the contexte for the translation, and avoid literal translation. "
|
||||||
|
)
|
||||||
|
# print(text)
|
||||||
|
# print(result.data.translated_text)
|
||||||
|
return result.data.translated_text
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Translation error with Ollama: {e}")
|
||||||
|
return text # Return original text on error
|
||||||
|
|
||||||
async def translate_text(translator, text, target_language):
|
async def translate_text(translator, text, target_language):
|
||||||
"""Translate text to target language"""
|
"""Translate text to target language"""
|
||||||
try:
|
try:
|
||||||
@ -195,7 +239,8 @@ async def process_table_xml_safely(zip_path, target_language, translator, transl
|
|||||||
if header_text in translated_cache:
|
if header_text in translated_cache:
|
||||||
column.attrib['name'] = translated_cache[header_text]
|
column.attrib['name'] = translated_cache[header_text]
|
||||||
else:
|
else:
|
||||||
translated_header = await translate_text(translator, header_text, target_language)
|
# translated_header = await translate_text(translator, header_text, target_language)
|
||||||
|
translated_header = await translate_with_ollama(header_text, target_language)
|
||||||
column.attrib['name'] = translated_header
|
column.attrib['name'] = translated_header
|
||||||
translated_cache[header_text] = translated_header
|
translated_cache[header_text] = translated_header
|
||||||
|
|
||||||
@ -264,7 +309,8 @@ async def translate_excel(file_path: str, target_language: str):
|
|||||||
if original_text in translated_cache:
|
if original_text in translated_cache:
|
||||||
cell.value = translated_cache[original_text]
|
cell.value = translated_cache[original_text]
|
||||||
else:
|
else:
|
||||||
translated_text = await translate_text(translator, original_text, target_language)
|
# translated_text = await translate_text(translator, original_text, target_language)
|
||||||
|
translated_text = await translate_with_ollama(original_text, target_language)
|
||||||
cell.value = translated_text
|
cell.value = translated_text
|
||||||
translated_cache[original_text] = translated_text
|
translated_cache[original_text] = translated_text
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user