Bot
What is a Bot
In Dandy, we want to make sure all the things you do have a distinct name to isolate them from your project's code. Bots should represent a singular action you want to do within your project.
Create a Basic Bot
To create your own bot, we are going to use the Bot class from the dandy module.
from dandy import Bot, Prompt
class AssistantBot(Bot):
def process(self, user_prompt: Prompt | str):
default_intel = self.llm.prompt_to_intel(
prompt=user_prompt,
)
return default_intel
intel = AssistantBot().process('Can you give me an idea for a book?')
print(intel.text)
A retired detective is hired to solve a 50-year-old cold case, only to discover that the killer was someone he trusted implicitly, and the case was covered up by the very institution he dedicated his life to.
Advanced Bot
When you create a bot it uses all the defaults of the dandy_settings.py file.
Below is an example of how you can customize bots to make sure they work the way you want.
from dandy import BaseIntel, Bot, Prompt
class CandyIntel(BaseIntel):
short_name: str
long_name: str
description: str
class CandyDesignBot(Bot):
llm_config = 'THINKING'
role = (
Prompt()
.text('You are a candy design bot.')
.line_break()
)
task = 'Use the request to make a new type of candy' # Any were you can use a Prompt you can also use a string
guidelines = (
Prompt()
.list([
'Make sure you response is sugar based not chocolate based.',
'Do not include any chocolate based words or phrases in the response.',
'Incorporate the theme of the request into the response.',
])
)
intel_class = CandyIntel
def process(self, user_prompt: Prompt | str, candy_theme: str) -> CandyIntel:
self.llm.options.temperature = 0.1
self.llm.options.max_completion_tokens=6000
prompt = (
Prompt()
.heading('Request')
.prompt(user_prompt)
.line_break()
.heading('Theme')
.prompt(candy_theme)
)
return self.llm.prompt_to_intel(
prompt=prompt,
)
candy_intel = CandyDesignBot().process(
user_prompt='Strawberries and Cookie Dough',
candy_theme='Medieval Times'
)
print(candy_intel)
short_name="Queen's Strawberry Joust" long_name='Royal Strawberry Cookie Dough Jousting Bites' description="A chewy sugar-based candy that transports you to a medieval feast. Real strawberry pieces and vanilla cookie dough chunks are embedded in a soft, ruby-red sugar base. Shaped like tiny royal shields, each bite is fit for a queen's banquet. The candy gleams with edible gold luster, reminiscent of treasures from a dragon's hoard. Perfect for medieval reenactments, Renaissance fairs, or whenever you crave a taste of royal indulgence. Contains real strawberry and cookie dough flavors with a sweet, fruity sweetness and warm vanilla undertones. Store in a castle tower (cool, dry place) for optimal freshness. Net weight: 4 oz (113g). Approximately 12 shield-shaped pieces per pouch. Allergen information: contains wheat and milk ingredients. Made in a facility that also processes soy, eggs, and tree nuts."