Python Fehlermeldung "KeyError: 'data'"?

2 Antworten

Schauen wir uns die Fehlermeldung doch mal an:

KeyError: 'Could not find 'data' key in response. 

Die Antwort muß einen Schlüssel Data beinhalten, schauen wir auf die Antwort:

Response received: 
{'detail': [{'type': 'model_attributes_type',
 'loc': ['body'],
 'msg': 'Input should be a valid dictionary or object to extract fields from',
 'input': '{"data": [""], "fn_index": 2, "session_hash": "d7f62bf0-174c-45fe-b3f6-c5e7f00848d3"}', 'url': 'https://errors.pydantic.dev/2.1/v/model_attributes_type'}]}

D.h. die Antwort der Gegenseite entspricht nicht dem erwarteten Format, weswegen es zu einem Fehler kommt. Das liegt unter anderem daran, daß die Antwort selbst eien Fehlermeldung ist, weil der Input nicht den Erwartungen entspricht.

Beachte insbesondere:

'input': '{"data": [""]

Du mußt Dir also in erster Linie die Frage stellen, warum Dein Aufruf von predict eine Liste mit einem leeren String erzeugt.

Und um das zu ergänzen, aus der API Doku von discord:

The actual contents of the message. If intents.message_content is not enabled this will always be an empty string unless the bot is mentioned or the message is a direct message.

Schau Dir also mal die Daten genauer an, die Dein on_message geliefert bekommt. Das andere ist: Fehlerbehandlung ist kein Luxus.

Setze in dieser Zeile: "result = fooocus_client.predict(message.content, fn_index=2)" einen Breakpoint und schaue nach, welchen Output du erhältst. Nach deiner Fehlermeldung sollte es definitiv ein Dictionary mit dem Key "data" geben. Falls nicht, dann solltest du den Fehler in dieser Zeile beheben können.