Moldable Chat: Tool-augmented interaction
To transform the chat into an "agent", we can provide tools that the LLM can choose to run.
For example, to allow the LLM to answer questions about how Ludo is used in the book, we can add tools for searching through Lepiter:
c := GtLChat new markdownResponse; tools: GtLTools leSearch; sendMarkdown: 'What is Ludo and what is it used for in the Glamorous Toolit Book?'
To answer our question, the LLM first needs to read the relevant pages from the book. To read them, it needs to find them in the book. To know which knowledge base the book is in, it needs to retrieve the available knowledge bases. Each of these steps should be accessible through tools. For example, the last step is supported by GtLToolForLepiterKnowledgeBases
.
c := GtLChat new
markdownResponse;
addResponseFormatForMagrite: GtLPharoScript named: 'PharoScript';
gtPageExplanation: 'Querying with GT search filters by example';
sendMarkdown: 'Provide a PharoScript with a search for methods that are in {{gtClass:BlElement}} and also refer to `assert:description:`.'
c := GtLChat new
markdownResponse;
tools: (GtLTools withAll: {GtLToolForChatMethodSearch new});
sendMarkdown: 'What are a few references of {{gtClass:BlElement}} that also refer to `assert:description:`.'