Skip to content

knowledge_answer_bot

django_spire.knowledge.intelligence.bots.knowledge_answer_bot

KnowledgeAnswerBot

Bases: Bot

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

llm_task = 'Read through the knowledge and answer the users request.' class-attribute instance-attribute

llm_guidelines = Prompt().list(['Make sure the answer is relevant and reflects knowledge entries.', 'Do not make up information use the provided knowledge entries as a source of truth.', 'Use line breaks to separate sections of the answer and use 2 if you need to separate the section from the previous.']) class-attribute instance-attribute

llm_intel_class = AnswerIntel class-attribute instance-attribute

process

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

    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')
    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.render_to_text()}')

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