Input path: /home/debian/html/nutritwin/output_llm/68ff5362d89d0/input.json
Output path: /home/debian/html/nutritwin/output_llm/68ff5362d89d0/output.json
Input text: J'ai mangé 55 g de pamplemousse.
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: J'ai mangé 55 g de pamplemousse.
==================================================================================================================================
==================================== Prompt =============================================
Identify in this list of intents: ["Identify food and beverage consumption or declaration", "Identify the user physical activity", "Answer a nutrition question", "Other intent"], the intents of the prompt: ###J'ai mangé 55 g de pamplemousse.###.
Format the result in JSON format: {"intents": []}.
=========================================================================================
------------------------------ LLM Raw response -----------------------------
{"intents": ["Identify food and beverage consumption or declaration"]}
-----------------------------------------------------------------------------
----------------- Make it compliant ------------------
{"intents": ["Identify food and beverage consumption or declaration"]}
------------------------------------------------------
ERROR: wrong object representation:
{'intents': ['Identify food and beverage consumption or declaration']}
------------------------ After simplification ------------------------
{
"intents": [
"Identify food and beverage consumption or declaration"
]
}
----------------------------------------------------------------------
==================================== Prompt =============================================
Convert this natural language query : """J'ai mangé 55 g de pamplemousse.""" into an array of JSON.
Ignore what it is not connected to nutrition, beverage or food.
Provide a solution without explanation.
Use the following ontology and only this ontology described in this Turtle/RDF model:
"""
@prefix food: .
@prefix rdfs: .
@prefix xsd: .
@prefix owl: .
@prefix prov: .
food: a owl:Ontology ;
rdfs:comment "Definition of the food archetype"@en .
food:name a owl:DatatypeProperty;
rdfs:label "name"@en;
rdfs:comment """Food or beverage identifier, the name should not contain information related to quantity or container (like glass...).
Ignore food or beverage when it is not consumed in the past, now or in the future.
The cooking mode is not in the name. The name is only in french."""@en;
rdfs:range xsd:string.
food:quantity a owl:DatatypeProperty ;
rdfs:label "quantity"@en;
rdfs:comment "The quantity of food or drink that is or was consumed. Quantity is only in french. Here are examples: 'un quignon', 'un cornet', 'un verre', 'une tranche', 'une boule', 'un', 'deux', 'trois',... Keep the same language."@en;
rdfs:range xsd:string.
food:cookingMethod a owl:DatatypeProperty ;
rdfs:label "cooking method"@en;
rdfs:comment "The cooking method of food. The cooking method is in french."@en;
rdfs:range xsd:string.
food:type a owl:DatatypeProperty ;
rdfs:label "type of food"@en;
rdfs:comment "Identify the type of food."@en;
rdfs:range xsd:string.
food:food a food:type ;
rdfs:label "food" .
food:beverage a food:type ;
rdfs:label "beverage" .
food:timeOfTheDay a owl:DatatypeProperty ;
rdfs:label "time of the day"@en;
rdfs:comment "Time of the day when food or drink was consumed."@en;
rdfs:range xsd:string.
food:breakfast a food:timeOfTheDay ;
rdfs:label "breakfast" .
food:lunch a food:timeOfTheDay ;
rdfs:label "lunch" .
food:snacking a food:timeOfTheDay ;
rdfs:label "snacking" .
food:dinner a food:timeOfTheDay ;
rdfs:label "dinner" .
food:brand a owl:DatatypeProperty ;
rdfs:label "Brand"@en;
rdfs:comment """Food or beverage brand. The restaurants are not brand.
When the name is very known (ex: Activia, Coca) and the brand is not mentioned, guess the brand."""@en;
rdfs:range xsd:string.
food:company a owl:DatatypeProperty ;
rdfs:label "Company"@en;
rdfs:comment "Product company."@en;
rdfs:range xsd:string.
food:enumEvent a rdfs:Class .
food:event a owl:DatatypeProperty ;
rdfs:label "event"@en;
rdfs:comment "Event of eating or drinking. Each must have an event"@en;
rdfs:range food:enumEvent.
food:intent a food:enumEvent ;
rdfs:label "intent" .
rdfs:comment "When the event should happen"@en.
food:declaration a food:enumEvent ;
rdfs:label "declaration" .
rdfs:comment "When the event has already occured"@en.
food:unknownEvent a food:enumEvent ;
rdfs:label "unknown" ;
rdfs:comment "When the event is unknown in the day"@en.
food:event a owl:DatatypeProperty ;
rdfs:label "event"@en;
rdfs:comment "Event of eating or drinking. Each must have an event"@en;
rdfs:range food:enumEvent.
food:intent a food:enumEvent ;
rdfs:label "intent" .
rdfs:comment "When the event should happen"@en.
food:declaration a food:enumEvent ;
rdfs:label "declaration" .
rdfs:comment "When the event has already occured"@en.
food:unknownEvent a food:enumEvent ;
rdfs:label "unknown" ;
rdfs:comment "When the event is unknown in the day"@en.
"""
Here is an example of result:
[
{
"name": "blanquette de veau",
"quantity": "un plat",
"cookingMethod": "mijot\u00e9",
"timeOfTheDay": "lunch",
"company": "Leclerc",
"type": "food",
"event": "declaration"
},
{
"name": "eau",
"brand": "Evian",
"company": "Danone",
"timeOfTheDay": "breakfast",
"quantity": "un verre",
"type": "beverage",
"event": "intent"
}
]
=========================================================================================
------------------------------ LLM Raw response -----------------------------
[
{
"name": "pamplemousse",
"quantity": "55 g",
"type": "food",
"event": "declaration"
}
]
-----------------------------------------------------------------------------
----------------- Make it compliant ------------------
[
{
"name": "pamplemousse",
"quantity": "55 g",
"type": "food",
"event": "declaration"
}
]
------------------------------------------------------
------------------------ After simplification ------------------------
[
{
"name": "pamplemousse",
"quantity": "55 g",
"type": "food",
"event": "declaration"
}
]
----------------------------------------------------------------------
--------------------------------- LLM result -----------------------------------
{'response': [{'name': 'pamplemousse', 'quantity': '55 g', 'type': 'food', 'event': 'declaration'}], 'cost': 0.09726}
--------------------------------------------------------------------------------
----------- result to be analyzed -----------
{'name': 'pamplemousse', 'quantity': '55 g', 'type': 'food', 'event': 'declaration'}
First try:
SELECT V_Name,V_Comment,V_NormName,V_NormComment,V_PackType,V_GTIN,V_GTINRef,V_ID,V_GlobalCount,V_NormTrademark,V_Trademark,V_NormAggr FROM KCALME_TABLE WHERE V_NormName LIKE '% pamplemousse %' AND (V_NormTrademark = '' OR V_NormTrademark IS NULL)
------------- Found solution (max 20) --------------
Pamplemousse - pamplemousse - - - 7320 - - - KCA#1e7b1c6d9400aebd37436d08bdcea40f
Pamplemousses Glacés - pamplemousse glace - - - 0 - - - KCA#26d9a127a9bd029aee5e14ed0700bc75
Pamplemousse au Sirop - pamplemousse sirop - - - 33 - - - KCA#8b583fb4c78894d920e7ff861ccaeaf5
Pamplemousses Grillés - pamplemousse grille - - - 0 - - - KCA#9acb1c552d38fd19dada4c29ad30bf67
Pamplemousses au Crabe - pamplemousse crabe - - - 27 - - - KCA#7c3942623d3bb0ddbbcc259c7d6cdd43
Pamplemousses en Salade - pamplemousse en salade - - - 38 - - - KCA#a9d65b51be23d49f287a3be91371d2ef
Pamplemousses en Soufflé - pamplemousse en souffle - - - 2 - - - KCA#4d88ca8817ace404aa2dc5821e63115d
Jus de Pamplemousse - ju de pamplemousse - - - 4507 - - - KCA#2592b9ea100dac142a692636cf827a58
Jus de Pamplemousse - ju de pamplemousse - pomelo, pur jus - - 0 - - - CIQ#5674642588aa39abaeb983844045cfbe
Jus de Pamplemousse - ju de pamplemousse - pomélo, à base de concentré - - 0 - - - CIQ#8cdcc341da6c654a85bb9a7b62e16a42
Glace au Pamplemousse - glace pamplemousse - - - 15 - - - KCA#ce641275780c9de6b5bad7b9b834534b
Jus de Pamplemousse et Orange Sanguine - ju de pamplemousse orange sanguine - - - 44 - - - KCA#62b6b53e3a59a758869b219036543fe9
Zeste de Pamplemousse Confit - zeste de pamplemousse confit - pamplemousse confit - - 0 - - - KCA#42fdb453e7ed7d207cc335de911f4b9b
Jus Orange Pamplemousse Pressés - ju orange pamplemousse presse - - - 517 - - - KCA#e606e760b12355e0cc070fbf069b4261
Jus de Mangue et Pamplemousse - ju de mangue pamplemousse - - - 10 - - - KCA#9ac940bd81ba8e0345dead555bf30bd6
----------------------------------------------------
ERROR: no solution for picto in the first solution
--------------------------------- final result -----------------------------------
{'prompt': "J'ai mangé 55 g de pamplemousse.", 'model': 'mistral-large-2411', 'imagePath': '', 'intents': ['Identify food and beverage consumption or declaration'], 'solutions': {'nutrition': [{'name': 'Pamplemousse', 'normName': ' pamplemousse ', 'comment': '', 'normComment': '', 'rank': 7320, 'id': 'KCA#1e7b1c6d9400aebd37436d08bdcea40f', 'quantity': '55 g', 'quantityLem': '55 g', 'pack': ['ORA.w400'], 'type': 'food', 'gtin': '', 'gtinRef': '', 'brand': '', 'time': '', 'event': 'declaration', 'serving': '', 'posiNormName': 0}], 'activity': [], 'response': {}}, 'cputime': 1.7039449214935303}
----------------------------------------------------------------------------------
LLM CPU Time: 1.7039449214935303
Traceback (most recent call last):
File "/home/debian/html/nutritwin/resources/KCALLMMainService.py", line 71, in
omess = KCALLMMain.runEvent(event)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/debian/html/nutritwin/resources/KCALLMMain.py", line 132, in runEvent
resp = KCALLMMainSpeechToData.execute(speech, imagePath, image64, comment, appId, device, version, age, gender, longitude, latitude, test)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/debian/html/nutritwin/resources/KCALLMMainSpeechToData.py", line 111, in execute
response = table.put_item(
^^^^^^^^^^^^^^^
File "/home/debian/myVirtualPythonEnvV2/lib/python3.11/site-packages/boto3/resources/factory.py", line 581, in do_action
response = action(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/debian/myVirtualPythonEnvV2/lib/python3.11/site-packages/boto3/resources/action.py", line 88, in __call__
response = getattr(parent.meta.client, operation_name)(*args, **params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/debian/myVirtualPythonEnvV2/lib/python3.11/site-packages/botocore/client.py", line 565, in _api_call
return self._make_api_call(operation_name, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/debian/myVirtualPythonEnvV2/lib/python3.11/site-packages/botocore/client.py", line 1021, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (UnrecognizedClientException) when calling the PutItem operation: The security token included in the request is invalid.