Compare commits

..

No commits in common. "b68bf17e62395b8904bbffc3125e3850863d7ba7" and "36b15d74e4ce05750839f2d09fc84d2e2ba466bd" have entirely different histories.

3 changed files with 85 additions and 120 deletions

View file

@ -5,9 +5,9 @@
}, },
"Prompt": { "Prompt": {
"CptPrompt": "Du bist der Pilot auf einem Linienflug und begrüßt deine Fluggäste am Startflughafen.Du informierst über den Zielflughafen, die Reisedauer und den getankten Treibstoff", "CptPrompt": "Du bist der Pilot auf einem Linienflug und begrüßt deine Fluggäste am Startflughafen.Du informierst über den Zielflughafen, die Reisedauer und den getankten Treibstoff",
"PurserPrompt_METAR": "Du bist Purser auf einem Flug an das in der METAR genannte Ziel.Der Flug ist noch nicht vollendet! Informiere die Fluggäste im Zuge der bevorstehenden Landung über die aktuelle Wetterlage hinsichtlich Temperatur, Wind und Sonne. Verhalte dich dabei wie die Wetterfee aus den Nachrichten und beschränke die Antwort auf maximal 2 kurze Sätze. Die Windrichtung bitte ignorieren. Nenne dabei den Zielflughafen mit Namen. Vermeide Aussagen wie 'Willkommen'. Sei dabei freundlich und kundenorientiert.", "PurserPrompt": "Du bist Purser auf einem Flug an das in der METAR genannte Ziel.Der Flug ist noch nicht vollendet! Informiere die Fluggäste im Zuge der bevorstehenden Landung über die aktuelle Wetterlage hinsichtlich Temperatur, Wind und Sonne. Verhalte dich dabei wie die Wetterfee aus den Nachrichten und beschränke die Antwort auf maximal 2 kurze Sätze. Die Windrichtung bitte ignorieren. Nenne dabei den Zielflughafen mit Namen. Vermeide Aussagen wie 'Willkommen'. Sei dabei freundlich und kundenorientiert.",
"CptName":"Hubobel", "CptName":"Hubobel",
"tone": ["ernst", "seriös", "lustig", "gehetzt", "witzig", "übertrieben witzig", "ängstlich", "überheblich", "tone": ["ernst", "seriös", "lustig", "gehetzt", "witzig", "übertrieben witzig", "ängstlich", "überheblich",
"dankbar", "übertrieben dankbar", "arrogant", "depressiv", "kindisch", "übertrieben kindisch", "unsicher", "dankbar", "übertrieben dankbar", "arrogant"]
"heldenhaft", "verwirrt"] }
} }

View file

@ -7,6 +7,17 @@ import os
import sys import sys
import random import random
USERNAME = "hubobel"
URL = "https://www.simbrief.com/api/xml.fetcher.php"
params = {
"username": USERNAME,
"json": 1, # JSON statt XML
}
Pfad = 'Universal_txts/Windows'
ordnerneu = Path(Pfad + '/neu/')
ordnerneu.mkdir(exist_ok=True)
def conf(): def conf():
appname = os.path.basename(sys.argv[0]) appname = os.path.basename(sys.argv[0])
appname = appname.replace(".py", ".conf") appname = appname.replace(".py", ".conf")
@ -92,102 +103,43 @@ def ai(prompt):
def stimmung(): def stimmung():
tone = (passw['Prompt']['tone']) tone = (passw['Prompt']['tone'])
tone = random.choice(list(tone)) tone = random.choice(list(tone))
print(tone)
return tone return tone
def WelcomePilot():
prompt_org = passw['Prompt']['CptPrompt']
info = {"Zielflughafen: " + dest.get("icao_code"), "Reisedauer:" + block,
"Entfernung: " + distance + "nm",
"Menge Sprit: " + fuel + "kg",
"Passagieranzahl" + pax,
"Flugzeugtyp:" + aircraft_name,
"Du freust dich auf den Flug und bedankst dich, das man sich für " + airline + " entschieden hat.",
"Dein Name:" + passw['Prompt']['CptName'],
"Startflughafen: " + origin.get("icao_code"),
"Du bist von deiner Art her:" + str(stimmung()),
"Wetter am Ziel" + metar_dest,
"Flugnummer" + general.get("flight_number"),
"Wetter am Start" + metar_origin}
for i in info:
prompt_org = prompt_org + i
antwort_AI = ai(prompt_org)
return antwort_AI
def METAR():
prompt_org = passw['Prompt']['PurserPrompt_METAR']
prompt2 = prompt_org + 'Die METAR lautet ' + metar_dest
antwort_AI = ai(prompt2)
return antwort_AI
def replaceFiles():
files = []
for datei in Path(Pfad).glob("*.txt"):
with open(datei, "r", encoding="utf-8") as f:
files.append(f"{datei.name}")
inhalt = f.read()
inhalt_neu = replacedynamic(inhalt)
dateineu = str(ordnerneu) + '/' + (f"{datei.name}")
with open(dateineu, 'w', encoding="utf-8") as e:
e.write(inhalt_neu)
return files
def Simbriefimport():
USERNAME = "hubobel"
URL = "https://www.simbrief.com/api/xml.fetcher.php"
params = {
"username": USERNAME,
"json": 1, # JSON statt XML
}
resp = requests.get(URL, params=params, timeout=15)
resp.raise_for_status()
data = resp.json()
general = data.get("general", {})
origin = data.get("origin", {})
origin_name = start_name(origin["icao_code"])
origin_icao = origin["icao_code"]
dest = data.get("destination", {})
dest_name = start_name(dest["icao_code"])
dest_icao = dest["icao_code"]
aircraft = data.get("aircraft", {})
time = data.get("times", {})
block = minuten_zu_zeit(int(time.get("sched_block")) / 60)
start_time = unix_to_datetime(int(time.get("sched_out")))
land_time = unix_to_datetime(int(time.get("sched_in")))
aircraft_icao = aircraft["icaocode"]
aircraft_name = aircr_name((aircraft_icao))
airline = airlinename(general.get("icao_airline"))
flightnumber = general.get("flight_number")
flightlevel = data['general']['initial_altitude']
fl = 'FL' + str(int(flightlevel) // 100)
distance = data['general']['route_distance']
fuel = data['fuel']['plan_ramp']
metar_origin = data['weather']['orig_metar']
metar_dest = data['weather']['dest_metar']
pax = data['weights']['pax_count']
payload = data['weights']['payload']
tow = data['weights']['est_tow']
zfw = data['weights']['est_zfw']
return (zfw, tow, payload, pax, metar_dest, metar_origin, fuel, distance, fl, flightlevel, flightnumber, airline,
aircraft_name, aircraft_icao, land_time, start_time, block, time, aircraft, dest_icao, dest_name, dest,
origin_icao, origin_name, origin, general)
Pfad = 'Universal_txts/Windows'
ordnerneu = Path(Pfad + '/neu/')
ordnerneu.mkdir(exist_ok=True)
passw = conf() passw = conf()
client = OpenAI( client = OpenAI(
api_key=passw['AI']['Token']) api_key=passw['AI']['Token'])
resp = requests.get(URL, params=params, timeout=15)
resp.raise_for_status()
data = resp.json() # dict
print(data.keys())
print(data['weights'])
# dict general = data.get("general", {})
origin = data.get("origin", {})
#print(data.keys()) origin_name = start_name(origin["icao_code"])
#print(data['weights']) origin_icao = origin["icao_code"]
dest = data.get("destination", {})
(zfw, tow, payload, pax, metar_dest, metar_origin, fuel, distance, fl, flightlevel, flightnumber, airline, dest_name = start_name(dest["icao_code"])
aircraft_name, aircraft_icao, land_time, start_time, block, time, aircraft, dest_icao, dest_name, dest, origin_icao, dest_icao = dest["icao_code"]
origin_name, origin, general) = Simbriefimport() aircraft = data.get("aircraft", {})
time = data.get("times", {})
block = minuten_zu_zeit(int(time.get("sched_block"))/60)
start_time = unix_to_datetime(int(time.get("sched_out")))
land_time = unix_to_datetime(int(time.get("sched_in")))
aircraft_icao = aircraft["icaocode"]
aircraft_name = aircr_name((aircraft_icao))
airline = airlinename(general.get("icao_airline"))
flightnumber = general.get("flight_number")
flightlevel = data['general']['initial_altitude']
fl = 'FL'+str(int(flightlevel)//100)
distance = data['general']['route_distance']
fuel = data['fuel']['plan_ramp']
metar_origin = data['weather']['orig_metar']
metar_dest = data['weather']['dest_metar']
pax = data['weights']['pax_count']
payload = data['weights']['payload']
tow = data['weights']['est_tow']
zfw = data['weights']['est_zfw']
print('') print('')
print("Airline:", general.get("icao_airline")) print("Airline:", general.get("icao_airline"))
@ -212,13 +164,35 @@ print("Wetter:", dest["icao_code"], metar_dest)
for datei in Path(Pfad).glob("*.txt"):
with open(datei, "r", encoding="utf-8") as f:
inhalt = f.read()
inhalt_neu = replacedynamic(inhalt)
dateineu = str(ordnerneu) + '/' + (f"{datei.name}")
with open(dateineu,'w', encoding="utf-8") as e:
e.write(inhalt_neu)
print(replaceFiles()) prompt_org = passw['Prompt']['PurserPrompt']
prompt2 = prompt_org + 'Die METAR lautet ' + metar_dest
antwort_AI = ai(prompt2)
print(antwort_AI.choices[0].message.content)
metarCabin = METAR() prompt_org = passw['Prompt']['CptPrompt']
print(metarCabin.choices[0].message.content)
info = {"Der Zielflughafen ist: " + dest.get("icao_code"), "Die Reisedauer beträgt ungefähr: " + block,
"Die Entfernung: " + distance + "nm",
"Der getankte Sprit: " + fuel + "kg",
"An Bord befinden sich " + pax + "Passagiere",
"Das Flugzeug ist eine " + aircraft_name,
"Du freust dich auf den Flug und bedankst dich, das man sich für " + airline + " entschieden hat.",
"Dein Name lautet " + passw['Prompt']['CptName'],
"Startflughafen: " + origin.get("icao_code"),
"sei dabei " + str(stimmung()),
"Wetter am Ziel" + metar_dest,
"Wetter am Start" + metar_origin}
welcomePilot = WelcomePilot() for i in info:
print(welcomePilot.choices[0].message.content) prompt_org = prompt_org + i
antwort_AI = ai(prompt_org)
print(antwort_AI.choices[0].message.content)
print(str(stimmung()))

33
test.py
View file

@ -1,23 +1,14 @@
import random from openai import OpenAI
passw = {'Prompt':
{
"PurserPrompt": "",
"CptPrompt": "",
"CptName":""
}, from Simbriefimport import metar_origin
'AI': metar_ai = "LEPA LEPA 191548Z VRB01KT 9999 FEW012 SCT028 18/15 Q1017 NOSIG"
{ prompt = 'Du bist Purser auf einem Flug an das in der METAR genannte Ziel.Der Flug ist noch nicht vollendet! Informiere die Fluggäste im Zuge der bevorstehenden Landung über die aktuelle Wetterlage hinsichtlich Temperatur, Wind und Sonne. Verhalte dich dabei wie die Wetterfee aus den Nachrichten und beschränke die Antwort auf maximal 2 kurze Sätze. Die Windrichtung bitte ignorieren. Nenne dabei den Zielflughafen mit Namen. Vermeide Aussagen wie "Willkommen". Sei dabei freundlich und kundenorientiert.' + metar_ai
"Token": "", client = OpenAI(
"Model": "",
"tone": {'ernst', 'seriös', 'lustig', 'gehetzt', 'witzig', 'übertrieben witzig', 'ängstlich',
'überheblich', 'dankbar', 'übertrieben dankbar', }
}
}
tone = (passw['AI']['tone']) completion = client.chat.completions.create(
model="gpt-4.1-mini",
messages=[
{"role": "user", "content": prompt}
tone = random.choice(list(tone)) ]
print(tone) )
print(completion.choices[0].message.content)