Skip to content

knowledge_entries_bot

django_spire.knowledge.intelligence.bots.knowledge_entries_bot

KnowledgeEntriesBot

Bases: Bot

llm_role = 'Knowledge Entry Search Assistant' class-attribute instance-attribute

llm_task = 'Read through the knowledge entries and return the most relevant for the user request.' class-attribute instance-attribute

llm_guidelines = Prompt().list(['Return 1 to 5 of the most relevant knowledge entries using block ids.', 'The relevant headings should be the nearest heading above the selected knowledge entry block.', 'Make sure the relevant heading text is from a heading with mark down formatting.', 'When returning the relevant heading remove any of the markdown formating characters.']) class-attribute instance-attribute

llm_intel_class = EntriesIntel class-attribute instance-attribute

process

Source code in django_spire/knowledge/intelligence/bots/knowledge_entries_bot.py
def process(self, user_input: str, entries: list[Entry]) -> EntriesIntel:

    entry_prompt = Prompt()
    entry_prompt.sub_heading('User Request')
    entry_prompt.line_break()
    entry_prompt.text(f'{user_input}')
    entry_prompt.line_break()
    entry_prompt.sub_heading('Knowledge Entries')
    entry_prompt.line_break()

    for entry in entries:
        for version_block in entry.current_version.blocks.all():
            if version_block.render_to_text() != '\n':
                entry_prompt.text(f'{version_block.id}: {version_block.render_to_text()}')

    return self.llm.prompt_to_intel(
        prompt=entry_prompt,
    )