2.7 KiB
2.7 KiB
Dialog Basics
BASIC dialogs in General Bots are designed for the LLM era - you write tools and context setters, not complex conversation flows.
Core Concepts
| Concept | Description |
|---|---|
| LLM Tools | BASIC scripts that become callable tools for the LLM |
| Context | SET CONTEXT provides knowledge to the LLM |
| Suggestions | ADD SUGGESTION guides conversations |
| Memory | GET/SET BOT/USER MEMORY for persistent data |
LLM-First Example
' Load context from memory
resume = GET BOT MEMORY "announcements"
context = GET BOT MEMORY "company_info"
' Give LLM the context it needs
SET CONTEXT "announcements" AS resume
SET CONTEXT "company" AS context
' Guide the conversation
CLEAR SUGGESTIONS
ADD SUGGESTION "announcements" AS "Show me this week's updates"
ADD SUGGESTION "company" AS "Tell me about the company"
' Start conversation
TALK "What would you like to know?"
Creating LLM Tools
Instead of parsing user input, create tools the LLM can call:
' update-summary.bas - A tool the LLM can invoke
PARAM topic AS STRING LIKE "Q4 Results" DESCRIPTION "Topic to summarize"
PARAM length AS STRING LIKE "brief" DESCRIPTION "brief or detailed"
DESCRIPTION "Creates a summary of the requested topic"
data = GET BOT MEMORY topic
summary = LLM "Summarize this " + length + ": " + data
TALK summary
Traditional vs LLM Approach
| Traditional | LLM + BASIC |
|---|---|
| Parse user input manually | LLM understands naturally |
| Complex IF/ELSE trees | Tools with PARAMs |
| Validate every field | LLM handles validation |
| Design conversation flows | LLM manages conversation |
Tool Pattern Example
' schedule-appointment.bas
PARAM service AS STRING LIKE "consultation" DESCRIPTION "Type of appointment"
PARAM date AS DATE LIKE "tomorrow at 3pm" DESCRIPTION "Preferred date/time"
DESCRIPTION "Schedules an appointment and sends confirmation"
appointment = GET "api/appointments/available" WITH service, date
IF appointment.available THEN
SET BOT MEMORY "last_appointment" AS appointment.id
SEND EMAIL TO user.email WITH appointment.details
TALK "Scheduled your " + service + " for " + date
ELSE
alternatives = GET "api/appointments/suggest" WITH service, date
TALK "That time isn't available. Alternatives: " + alternatives
END IF
Best Practices
| Do | Don't |
|---|---|
| Write focused tools | Create complex conversation flows |
| Use context wisely | Micromanage the LLM |
| Trust the LLM | Parse user input manually |
| Use suggestions | Force rigid paths |
See Also
- Keywords Reference - Complete keyword list
- Chapter Overview - Philosophy and introduction
- Templates - Real-world examples