Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	| import os | |
| from langchain_openai import ChatOpenAI | |
| from dotenv import load_dotenv | |
| import json | |
| import openai | |
| from langsmith.wrappers import wrap_openai | |
| from langsmith import traceable | |
| from langchain import hub | |
| import re | |
| load_dotenv() | |
| # -------------------------------------------------- | |
| # Utility Functions | |
| # -------------------------------------------------- | |
| client = wrap_openai(openai.OpenAI()) | |
| chatModel_json = ChatOpenAI( | |
| model="gpt-4o", | |
| model_kwargs={"response_format": {"type": "json_object"}}, | |
| ) | |
| chatModel_no_json = ChatOpenAI( | |
| model="gpt-4o" | |
| ) | |
| async def parse_json_with_retries(json_string, max_attempts=3): | |
| for attempt in range(max_attempts): | |
| try: | |
| return json.loads(json_string) | |
| except json.JSONDecodeError as error: | |
| if attempt == max_attempts - 1: | |
| raise error | |
| async def invoke_agent(runnable, params): | |
| content = runnable.invoke(params) | |
| if hasattr(content, 'content'): | |
| content = content.content | |
| return content | |
| # -------------------------------------------------- | |
| # Translation Function | |
| # -------------------------------------------------- | |
| async def translate_text(text, target_language): | |
| try: | |
| first_prompt = hub.pull("getgloby/agent-1-get-info") | |
| print("First prompt pulled successfully.") | |
| except Exception as e: | |
| print(f"Error al obtener el primer agente: {e}") | |
| return | |
| first_runnable = first_prompt | chatModel_no_json | |
| try: | |
| first_agent_output = await invoke_agent(first_runnable, { | |
| "originalText": text, | |
| "targetLanguage": target_language, | |
| }) | |
| print(f"First agent output: {first_agent_output}") | |
| except Exception as e: | |
| print(f"Error invoking first agent: {e}") | |
| print(f"Error details: {e}") | |
| return | |
| translations = [] | |
| for i in range(3): | |
| try: | |
| second_prompt = hub.pull("getgloby/agent-2-translate") | |
| print(f"Second prompt pulled successfully for iteration {i + 1}.") | |
| except Exception as e: | |
| print(f"Error al obtener el segundo agente en la iteración {i + 1}: {e}") | |
| continue | |
| second_runnable = second_prompt | chatModel_json | |
| try: | |
| second_agent_output = await invoke_agent(second_runnable, { | |
| "originalText": text, | |
| "firstAgentOutput": first_agent_output, | |
| "targetLanguage": target_language, | |
| }) | |
| print(f"Second agent output (iteration {i + 1}): {second_agent_output}") | |
| except Exception as e: | |
| print(f"Error invoking second agent in iteration {i + 1}: {e}") | |
| print(f"Error details: {e}") | |
| continue | |
| try: | |
| parsed_second_agent_output = await parse_json_with_retries(second_agent_output) | |
| translation = parsed_second_agent_output["translation"] | |
| print(f"Parsed second agent output (iteration {i + 1}): {translation}") | |
| except Exception as e: | |
| print(f"Error parsing second agent output in iteration {i + 1}: {e}") | |
| print(f"Error details: {e}") | |
| continue | |
| try: | |
| third_prompt = hub.pull("getgloby/agent-3-improve-translation") | |
| print(f"Third prompt pulled successfully for iteration {i + 1}.") | |
| except Exception as e: | |
| print(f"Error al obtener el tercer agente en la iteración {i + 1}: {e}") | |
| continue | |
| third_runnable = third_prompt | chatModel_json | |
| try: | |
| third_agent_output = await invoke_agent(third_runnable, { | |
| "originalText": text, | |
| "firstAgentOutput": first_agent_output, | |
| "secondAgentOutput": translation, | |
| }) | |
| print(f"Third agent output (iteration {i + 1}): {third_agent_output}") | |
| except Exception as e: | |
| print(f"Error invoking third agent in iteration {i + 1}: {e}") | |
| print(f"Error details: {e}") | |
| continue | |
| try: | |
| third_agent_output_json = await parse_json_with_retries(third_agent_output) | |
| optimized_translation = third_agent_output_json["optimizedTranslation"] | |
| print(f"Optimized translation (iteration {i + 1}): {optimized_translation}") | |
| except Exception as e: | |
| print(f"Error parsing third agent output in iteration {i + 1}: {e}") | |
| print(f"Error details: {e}") | |
| continue | |
| translations.append(optimized_translation) | |
| try: | |
| final_prompt = hub.pull("getgloby/agent-4-final-translation") | |
| print("Final prompt pulled successfully.") | |
| except Exception as e: | |
| print(f"Error al obtener el agente final: {e}") | |
| return | |
| final_runnable = final_prompt | chatModel_json | |
| try: | |
| final_agent_output = await invoke_agent(final_runnable, { | |
| "originalText": text, | |
| "firstAgentOutput": first_agent_output, # Cambiado de contextInfo a firstAgentOutput | |
| "translation1": translations[0], | |
| "translation2": translations[1], | |
| "translation3": translations[2], | |
| "targetLanguage": target_language, | |
| }) | |
| print(f"Final agent output: {final_agent_output}") | |
| except Exception as e: | |
| print(f"Error invoking final agent: {e}") | |
| print(f"Error details: {e}") | |
| return | |
| try: | |
| final_agent_output_json = await parse_json_with_retries(final_agent_output) | |
| final_translation = final_agent_output_json["finalTranslation"] | |
| print(f"Final translation: {final_translation}") | |
| except Exception as e: | |
| print(f"Error parsing final agent output: {e}") | |
| print(f"Error details: {e}") | |
| return | |
| return final_translation | |