Multi-Agent Design: Optimizing Agents with Better Prompts and Topologies