from faker import Faker fake = Faker() from mistralai import Mistral import os api_key = os.environ["MISTRAL_API_KEY"] if api_key is None: raise ValueError("MISTRAL_API_KEY environment variable not set") basic_instruction = ("Du nimmst an einer Debatte teil. Dir wird ein Thema vorgegeben, und du musst entweder dafür oder " "dagegen argumentieren. Verhalte dich wie ein typischer Schweizer Politiker in einer öffentlich ausgestrahlten " "Debatte. Gehe auf die Argumente deines Gegners ein, analysiere sie und antworte darauf. Deine Antwort sollte " "maximal 100 Wörter umfassen und keine Aufzählungen enthalten. Wenn derselbe Aspekt diskutiert wird, versuche ein " "neues Argument zu finden. Sei Kreativ und halte die Diskussion lebendig. Das Thema der Debatte ist die " "Legalisierung von Cannabis. Wenn du als Erster sprichst, wähle einen spezifischen " "Aspekt des Themas aus und beginne damit.") class Participant: def __init__(self, name, role_description): self.name = f"""{name} {fake.name()}""" self.client = Mistral(api_key=api_key) self.role_description = role_description try: os.remove(f"log/{self.__class__.__name__}.md") except FileNotFoundError: pass self.messages = [{"role": "system", "content": basic_instruction}, {"role": "system", "content": self.role_description}] def answer(self, question): self.messages.append({"role": "user", "content": question}) response = self.client.chat.complete( temperature=0.7, model="mistral-large-latest", messages=self.messages) answer = response.choices[0].message.content self.messages.append({"role": "assistant", "content": answer}) self.write_to_file(self.__class__.__name__, self.messages) return answer def write_to_file(self, filename, messages): with open(f"log/{filename}.md", "w") as file: for message in messages: role = "unknown" match message['role']: case "system": role = "System Prompt" case "user": role = "Gegnerische Antwort" case "assistant": role = "Meine Antwort" file.write(f"## {role}\n") file.write(f"{message['content']}\n\n") class ProParticipant(Participant): def __init__(self, name): role_description = ("Du bist ein Befürworter der Legalisierung von Cannabis. Du argumentierst dafür, dass " "Cannabis legalisiert werden sollte. Du hast eine starke Meinung zu dieser Frage und bist bereit, dich " "dafür einzusetzen.") super().__init__(name, role_description) class ContraParticipant(Participant): def __init__(self, name): role_description =("Du lehnst die Legalisierung von Cannabis vehement ab. Du argumentierst dagegen, dass " "Cannabis legalisiert werden sollte. Du hast eine extreme Meinung zu dieser Frage und bist bereit, dich " "dafür einzusetzen, und weichst nicht von deiner Meinung ab.") super().__init__(name, role_description)