Reformated and fixed E402 Module level import not at top of file
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
from participant import ProParticipant, ContraParticipant
|
from participant import ProParticipant, ContraParticipant
|
||||||
import random
|
import random
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
pro_participant = ProParticipant("Pro")
|
pro_participant = ProParticipant("Pro")
|
||||||
contra_participant = ContraParticipant("Contra")
|
contra_participant = ContraParticipant("Contra")
|
||||||
@@ -9,12 +10,13 @@ def main():
|
|||||||
opponents_answer = "Du bist der erste Teilnehmer in der ersten Runde. Was ist deine Meinung zum Thema?"
|
opponents_answer = "Du bist der erste Teilnehmer in der ersten Runde. Was ist deine Meinung zum Thema?"
|
||||||
|
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
print(f"Round {i+1}")
|
print(f"Round {i + 1}")
|
||||||
|
|
||||||
for participant in participants:
|
for participant in participants:
|
||||||
opponents_answer = participant.answer(opponents_answer)
|
opponents_answer = participant.answer(opponents_answer)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
+29
-21
@@ -1,56 +1,60 @@
|
|||||||
|
|
||||||
from faker import Faker
|
from faker import Faker
|
||||||
fake = Faker()
|
|
||||||
|
|
||||||
from mistralai import Mistral
|
from mistralai import Mistral
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
fake = Faker()
|
||||||
|
|
||||||
|
|
||||||
api_key = os.environ["MISTRAL_API_KEY"]
|
api_key = os.environ["MISTRAL_API_KEY"]
|
||||||
if api_key is None:
|
if api_key is None:
|
||||||
raise ValueError("MISTRAL_API_KEY environment variable not set")
|
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 "
|
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 "
|
"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 "
|
"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 "
|
"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 "
|
"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 "
|
"Legalisierung von Cannabis. Wenn du als Erster sprichst, wähle einen spezifischen "
|
||||||
"Aspekt des Themas aus und beginne damit.")
|
"Aspekt des Themas aus und beginne damit."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Participant:
|
class Participant:
|
||||||
def __init__(self, name, role_description):
|
def __init__(self, name, role_description):
|
||||||
self.name = f"""{name} {fake.name()}"""
|
self.name = f"""{name} {fake.name()}"""
|
||||||
self.client = Mistral(api_key=api_key)
|
self.client = Mistral(api_key=api_key)
|
||||||
self.role_description = role_description
|
self.role_description = role_description
|
||||||
|
|
||||||
try:
|
try:
|
||||||
os.remove(f"log/{self.__class__.__name__}.md")
|
os.remove(f"log/{self.__class__.__name__}.md")
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
self.messages = [{"role": "system", "content": basic_instruction},
|
self.messages = [
|
||||||
{"role": "system", "content": self.role_description}]
|
{"role": "system", "content": basic_instruction},
|
||||||
|
{"role": "system", "content": self.role_description},
|
||||||
|
]
|
||||||
|
|
||||||
def answer(self, question):
|
def answer(self, question):
|
||||||
self.messages.append({"role": "user", "content": question})
|
self.messages.append({"role": "user", "content": question})
|
||||||
|
|
||||||
response = self.client.chat.complete(
|
response = self.client.chat.complete(
|
||||||
temperature=0.7,
|
temperature=0.7, model="mistral-large-latest", messages=self.messages
|
||||||
model="mistral-large-latest",
|
)
|
||||||
messages=self.messages)
|
|
||||||
|
|
||||||
answer = response.choices[0].message.content
|
answer = response.choices[0].message.content
|
||||||
self.messages.append({"role": "assistant", "content": answer})
|
self.messages.append({"role": "assistant", "content": answer})
|
||||||
|
|
||||||
self.write_to_file(self.__class__.__name__, self.messages)
|
self.write_to_file(self.__class__.__name__, self.messages)
|
||||||
|
|
||||||
return answer
|
return answer
|
||||||
|
|
||||||
def write_to_file(self, filename, messages):
|
def write_to_file(self, filename, messages):
|
||||||
with open(f"log/{filename}.md", "w") as file:
|
with open(f"log/{filename}.md", "w") as file:
|
||||||
for message in messages:
|
for message in messages:
|
||||||
role = "unknown"
|
role = "unknown"
|
||||||
match message['role']:
|
match message["role"]:
|
||||||
case "system":
|
case "system":
|
||||||
role = "System Prompt"
|
role = "System Prompt"
|
||||||
case "user":
|
case "user":
|
||||||
@@ -65,16 +69,20 @@ class Participant:
|
|||||||
|
|
||||||
class ProParticipant(Participant):
|
class ProParticipant(Participant):
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
role_description = ("Du bist ein Befürworter der Legalisierung von Cannabis. Du argumentierst dafür, dass "
|
role_description = (
|
||||||
"Cannabis legalisiert werden sollte. Du hast eine starke Meinung zu dieser Frage und bist bereit, dich "
|
"Du bist ein Befürworter der Legalisierung von Cannabis. Du argumentierst dafür, dass "
|
||||||
"dafür einzusetzen.")
|
"Cannabis legalisiert werden sollte. Du hast eine starke Meinung zu dieser Frage und bist bereit, dich "
|
||||||
|
"dafür einzusetzen."
|
||||||
|
)
|
||||||
|
|
||||||
super().__init__(name, role_description)
|
super().__init__(name, role_description)
|
||||||
|
|
||||||
|
|
||||||
class ContraParticipant(Participant):
|
class ContraParticipant(Participant):
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
role_description =("Du lehnst die Legalisierung von Cannabis vehement ab. Du argumentierst dagegen, dass "
|
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 "
|
"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.")
|
"dafür einzusetzen, und weichst nicht von deiner Meinung ab."
|
||||||
|
)
|
||||||
super().__init__(name, role_description)
|
super().__init__(name, role_description)
|
||||||
|
|||||||
Reference in New Issue
Block a user