diff --git a/examples/four_way_conversation.py b/examples/four_way_conversation.py new file mode 100644 index 0000000..c414e46 --- /dev/null +++ b/examples/four_way_conversation.py @@ -0,0 +1,58 @@ +import time +from _context import simplemind as sm + + +class ConversationDisplay(sm.BasePlugin): + def post_send_hook(self, conversation, response): + # Simple print output instead of Rich formatting + print(f"\n{conversation.llm_provider}:") + print(f"{response.text.strip()}\n") + + +def four_way_conversation(topic: str, rounds: int = 3): + # Create conversations for four different AIs + with ( + sm.create_conversation(llm_provider="anthropic") as claude_conv, + sm.create_conversation(llm_model="gpt-4", llm_provider="openai") as gpt4_conv, + sm.create_conversation( + llm_model="llama3.2", llm_provider="ollama" + ) as llama_conv, + sm.create_conversation(llm_provider="groq") as groq_conv, + ): + # Add display plugin to each conversation + display = ConversationDisplay() + for conv in [claude_conv, gpt4_conv, llama_conv, groq_conv]: + conv.add_plugin(display) + + # Initial prompt + print(f"\nTopic: {topic}\n") + + # Start with Claude + claude_conv.add_message( + "user", + f"Share your thoughts on this topic: {topic}. Keep your response concise.", + meta={}, + ) + last_response = claude_conv.send() + + # Continue the conversation + for _ in range(rounds): + for conv in [llama_conv, gpt4_conv, groq_conv, claude_conv]: + # Add a small delay between responses + time.sleep(1) + + # Each AI responds to the previous statement + conv.add_message( + "user", + f"Respond to this perspective from another AI about {topic}: " + f"{last_response.text}\nKeep your response concise and add your own insights.", + meta={}, + ) + last_response = conv.send() + + +if __name__ == "__main__": + topic = "A new platform for AI and humans to co-create together. What would it look like? Discuss." + print("\nStarting a four-way AI conversation...\n") + four_way_conversation(topic) + print("\nConversation ended.\n")