import asyncio from agents import Agent, ItemHelpers, Runner, trace from examples.auto_mode import input_with_fallback """ This example shows the parallelization pattern. We run the agent three times in parallel, and pick the best result. """ spanish_agent = Agent( name="spanish_agent", instructions="You translate the user's message to Spanish", ) translation_picker = Agent( name="translation_picker", instructions="You pick the best Spanish translation from the given options.", ) async def main(): msg = input_with_fallback( "Hi! Enter a message, and we'll translate it to Spanish.\n\n", "Good morning!", ) # Ensure the entire workflow is a single trace with trace("Parallel translation"): res_1, res_2, res_3 = await asyncio.gather( Runner.run( spanish_agent, msg, ), Runner.run( spanish_agent, msg, ), Runner.run( spanish_agent, msg, ), ) outputs = [ ItemHelpers.text_message_outputs(res_1.new_items), ItemHelpers.text_message_outputs(res_2.new_items), ItemHelpers.text_message_outputs(res_3.new_items), ] translations = "\n\n".join(outputs) print(f"\n\nTranslations:\n\n{translations}") best_translation = await Runner.run( translation_picker, f"Input: {msg}\n\nTranslations:\n{translations}", ) print("\n\n-----") print(f"Best translation: {best_translation.final_output}") if __name__ == "__main__": asyncio.run(main())