Input path: /home/debian/html/nutritwin/output_llm/663a5492aa3f9/input.json
Output path: /home/debian/html/nutritwin/output_llm/663a5492aa3f9/output.json
Input text: Je marche pendant 30 minutes, combien de calories est-ce que je brûle ?
DB path: __deriveddata__/DerivedObjects/Data/KcalMeDB_fr.sl3
Picto path: __deriveddata__/DerivedObjects/Data/PictoMatcherNetNG_fr.json
Sport grounding path: __deriveddata__/DerivedObjects/Data/DerivedSportMET.json
==================================================================================================================================
Prompt from user: Je marche pendant 30 minutes, combien de calories est-ce que je brûle ?
==================================================================================================================================
==================================== Prompt =============================================
Identify in this list of intents: ["Identify food consumption or declaration", "Identify the user physical activity", "Answer a nutrition question", "Other intent"], the intents of the prompt: ###Je marche pendant 30 minutes, combien de calories est-ce que je brûle ?###.
Format the result in JSON format: {intents: []}.
=========================================================================================
------------------------------ LLM Raw response -----------------------------
```json
{
"intents": ["Identify the user physical activity", "Answer a nutrition question"]
}
```
-----------------------------------------------------------------------------
----------------- Make it compliant ------------------
```json
{
"intents": ["Identify the user physical activity", "Answer a nutrition question"]
}
```
------------------------------------------------------
------------------------ After simplification ------------------------
{ "intents": ["Identify the user physical activity", "Answer a nutrition question"]}
----------------------------------------------------------------------
==================================== Prompt =============================================
Convert this natural language query : """Je marche pendant 30 minutes, combien de calories est-ce que je brûle ?""" into an array in JSON of sport or physical activities.
Provide a solution without explanation.
Use only the ontology described in this RDF model:
"""
@prefix activity: .
@prefix rdfs: .
@prefix xsd: .
@prefix owl: .
@prefix prov: .
activity: a owl:Ontology ;
rdfs:comment "Definition of the sport and physical activity archetype"@en .
activity:name a owl:DatatypeProperty;
rdfs:label "name"@en;
rdfs:comment "Sport or physical activity identifier, the name should not contain information related to duration. Ignore the negative action. Keep the same language"@en;
rdfs:range xsd:string.
# Define the enumeration class
activity:EnumActivity a rdfs:Class .
activity:BasketBall a activity:EnumActivity ;
rdfs:label "Basket-ball is the exact name" .
activity:Cyclisme a activity:EnumActivity ;
rdfs:label "Cyclisme is the exact name" .
activity:Boxe a activity:EnumActivity ;
rdfs:label "Boxe is the exact name" .
activity:Danse a activity:EnumActivity ;
rdfs:label "Danse is the exact name" .
activity:Zumba a activity:EnumActivity ;
rdfs:label "Zumba is the exact name" .
activity:PlongeeSousMarine a activity:EnumActivity ;
rdfs:label "Plongée sous-marine is the exact name" .
activity:Escrime a activity:EnumActivity ;
rdfs:label "Escrime is the exact name" .
activity:Football a activity:EnumActivity ;
rdfs:label "Football is the exact name" .
activity:Jardinage a activity:EnumActivity ;
rdfs:label "Jardinage is the exact name" .
activity:Golf a activity:EnumActivity ;
rdfs:label "Golf is the exact name" .
activity:Gymnastique a activity:EnumActivity ;
rdfs:label "Gymnastique is the exact name" .
activity:Judo a activity:EnumActivity ;
rdfs:label "Judo is the exact name" .
activity:Karate a activity:EnumActivity ;
rdfs:label "Karaté is the exact name" .
activity:CordeASauter a activity:EnumActivity ;
rdfs:label "Corde à sauter is the exact name" .
activity:RameurDAppartement a activity:EnumActivity ;
rdfs:label "Rameur d'appartement is the exact name" .
activity:CourseAPied a activity:EnumActivity ;
rdfs:label "Course à pied is the exact name" .
activity:FaireLAmour a activity:EnumActivity ;
rdfs:label "Faire l'amour is the exact name" .
activity:SkiDeDescente a activity:EnumActivity ;
rdfs:label "Ski de descente is the exact name" .
activity:Natation a activity:EnumActivity ;
rdfs:label "Natation is the exact name" .
activity:Tennis a activity:EnumActivity ;
rdfs:label "Tennis is the exact name" .
activity:TapisDeCourse a activity:EnumActivity ;
rdfs:label "Tapis de course is the exact name" .
activity:SkiDeFond a activity:EnumActivity ;
rdfs:label "Ski de fond is the exact name" .
activity:VeloDAppartement a activity:EnumActivity ;
rdfs:label "Vélo d'appartement is the exact name" .
activity:Aquabiking a activity:EnumActivity ;
rdfs:label "Aquabiking is the exact name" .
activity:VeloElliptique a activity:EnumActivity ;
rdfs:label "Vélo elliptique is the exact name" .
activity:Equitation a activity:EnumActivity ;
rdfs:label "Equitation is the exact name" .
activity:Escalade a activity:EnumActivity ;
rdfs:label "Escalade is the exact name" .
activity:PatinsEnLigne a activity:EnumActivity ;
rdfs:label "Patins en ligne is the exact name" .
activity:TennisDeTable a activity:EnumActivity ;
rdfs:label "Tennis de table is the exact name" .
activity:Marche a activity:EnumActivity ;
rdfs:label "Marche is the exact name" .
activity:MarcheAvecUnChien a activity:EnumActivity ;
rdfs:label "Marche avec un chien is the exact name" .
activity:TachesMenageres a activity:EnumActivity ;
rdfs:label "Tâches ménagères is the exact name" .
activity:MarcheNordique a activity:EnumActivity ;
rdfs:label "Marche nordique is the exact name" .
activity:duration a owl:DatatypeProperty ;
rdfs:label "duration"@en;
rdfs:comment "The duration must be a number and must be in minute. If the duration is unknown, set duration to 0. A full day of activity is equivalent to a duration of 8 hours. A half day of activity is equivalent to a duration of 4 hours."@en;
rdfs:range xsd:integer.
activity:event a owl:DatatypeProperty ;
rdfs:label "event"@en;
rdfs:comment "Event of eating or drinking. Each must have an event"@en;
rdfs:range xsd:string.
activity:intent a activity:event ;
rdfs:label "intent" ;
rdfs:comment "When the event should happen"@en.
activity:declaration a activity:event ;
rdfs:label "declaration" ;
rdfs:comment "When the event has already occured"@en.
activity:unknownEvent a activity:event ;
rdfs:label "unknown" ;
rdfs:comment "When the event is unknown in the day, it is the default value"@en.
activity:EnumIntensity a rdfs:Class .
activity:lowLevel a activity:EnumIntensity ;
rdfs:label "low" ;
rdfs:comment "When the acitivity intent is low"@en.
activity:moderateLevel a activity:EnumIntensity ;
rdfs:label "moderate" ;
rdfs:comment "When the acitivity intent is moderate"@en.
activity:highLevel a activity:EnumIntensity ;
rdfs:label "high" ;
rdfs:comment "When the acitivity intent is high"@en.
activity:intenseLevel a activity:EnumIntensity ;
rdfs:label "intense" ;
rdfs:comment "When the acitivity intent is intense"@en.
activity:veryIntenseLevel a activity:EnumIntensity ;
rdfs:label "very intense" ;
rdfs:comment "When the acitivity intent is very intense"@en.
activity:unknownLevel a activity:EnumIntensity ;
rdfs:label "unknown" ;
rdfs:comment "When the acitivity intent is unknown"@en.
activity:intensity a owl:DatatypeProperty ;
rdfs:label "intensity"@en;
rdfs:comment "Sport or activity intensity"@en;
rdfs:range activity:EnumIntensity .
"""
=========================================================================================
------------------------------ LLM Raw response -----------------------------
```json
[
{
"activity:name": "Marche",
"activity:duration": 30,
"activity:intensity": "activity:moderateLevel"
}
]
```
-----------------------------------------------------------------------------
----------------- Make it compliant ------------------
```json
[
{
"activity:name": "Marche",
"activity:duration": 30,
"activity:intensity": "activity:moderateLevel"
}
]
```
------------------------------------------------------
------------------------ After simplification ------------------------
[ { "activity:name": "Marche", "activity:duration": 30, "activity:intensity": "activity:moderateLevel" }]
----------------------------------------------------------------------
--------------------------------- LLM result -----------------------------------
{'response': [{'activity:name': 'Marche', 'activity:duration': 30, 'activity:intensity': 'activity:moderateLevel'}], 'cost': 0.0}
--------------------------------------------------------------------------------
Traceback (most recent call last):
File "/home/debian/html/nutritwin/resources/KCALLMMainService.py", line 70, in
omess = KCALLMMain.runEvent(event)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/debian/html/nutritwin/resources/KCALLMMain.py", line 134, in runEvent
resp = KCALLMMainSpeechToData.execute(speech, image64, comment, appId, device, version, age, gender, longitude, latitude, test, llmid)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/debian/html/nutritwin/resources/KCALLMMainSpeechToData.py", line 39, in execute
omess = executeLLMSingle(text, image64, comment, model)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/debian/html/nutritwin/resources/KCALLMMainSpeechToData.py", line 241, in executeLLMSingle
sols = KCALLMActivityUtilities.getBestSolutions(jresult["response"], jSports)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/debian/html/nutritwin/resources/KCALLMActivityUtilities.py", line 19, in getBestSolutions
nameLLM = act["name"].lower()
~~~^^^^^^^^
KeyError: 'name'