Controlling a robot with a large language model
===============================================

LaMini is a lightweight large language model of the encoder-decoder architecture. 
It employs a mere 768 features and 11 transformer blocks in the encoder and decoder, 
so it can also run on a CPU. 

Install the stuff for the LaMini model in the following way:
- in the terminal room:
  > pip install --user torch torchvision torchaudio
  > pip install --user transformers
- on your notebook:
  select your option at https://pytorch.org/get-started/locally/ and perform the generated pip command
  > pip install git+https://github.com/huggingface/transformers

Download LaMini by run-download.bat

Test LaMini and check codes of the machines based on the LLM:
- see chatbot.py, run via run-chatbot.bat, modify the question, and check the generated answer
- see generator.py, run via run-generator.bat, modify the start text, and check the result
  optionally: modify the program to generate more sentences, the next one upon the context of the previous one
- see classifier.py, run via run-classifier.bat, add an instruction variant, and check its similarities.
  decide on a similarity threshold for the analogical commands (prefer a higher value, concerning 
  that a set of text examples represents one command)

Run the iCubSim simulator by install_and_run.bat, and enter n as no for the question about the objects.
Use the key 'W' to see details in the robot's face and the ball put on the table

Employ run-main.bat to start the system that responds to commands: hit, say X, smile 
and parroting other requests.

Modify the controlagent.py to improve abilities to recognize commands and respond to them
using LLM.

Optional: Add the ability to say a few random but reasonable sentences from time to time to the robot.

Use the prompt engineering to make the robot's answers relevant to the robot's body.
(e.g., "How many arms do you have?")
