initial commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
|
||||
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 = """Sie sind Teilnehmer an einer Debatte. Sie sind entweder dafür oder dagegen. Ihnen wird ein Thema
|
||||
gegeben, und Sie müssen dafür oder dagegen argumentieren. Argumentieren Sie wie ein durchschnittlicher Politiker.
|
||||
Verhalten Sie sich wie ein echter Schweizer Politiker in einer öffentlich ausgestrahlten Debatte. Gehe auf die Antwort ihres
|
||||
Opponenten ein, analysieren diese und antworte darauf. Beschränke dich auf maximal 100 Wörter. Vermeide Aufz$ahlungen.
|
||||
|
||||
Das Thema ist die Legalisierung von Cannabis. Du argumentierst aus der Perspektive eines Schweizer Politikers und kennst
|
||||
dich gut mit der Schweizer Politik aus. Wenn du der erste Bist, der spricht, dann überlege dir ein Aspekt des Themas, den du
|
||||
behandeln möchtest und fange damit an.
|
||||
"""
|
||||
|
||||
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
|
||||
os.remove(f"log/{self.__class__.__name__}.txt")
|
||||
|
||||
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(
|
||||
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}.txt", "w") as file:
|
||||
for message in messages:
|
||||
file.write(f"{message['role']}: {message['content']}\n\n")
|
||||
file.write("----------------------------------------------------------\n\n")
|
||||
|
||||
|
||||
class ProParticipant(Participant):
|
||||
def __init__(self, name):
|
||||
role_description = """Du bist für die 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 bist lehhnst die Legalisierung von Cannabis wehement 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)
|
||||
Reference in New Issue
Block a user