first commit
This commit is contained in:
99
bots/abot_scripting_bot.py
Normal file
99
bots/abot_scripting_bot.py
Normal file
@@ -0,0 +1,99 @@
|
||||
# --- START OF FILE template_bot.py ---
|
||||
# This is a template file for creating new bot profiles.
|
||||
# To create a new bot profile for a specific Slack channel:
|
||||
#
|
||||
# 1. **Copy this file** and rename it (e.g., `sales_bot.py`, `billing_bot.py`).
|
||||
# 2. **Modify the configuration variables** below (SYSTEM_PROMPT, MODEL, etc.)
|
||||
# to define the new bot's personality, capabilities, and resource limits.
|
||||
# **Change BOT_IDENTIFIER** to a unique name (e.g., "sales", "billing").
|
||||
# 3. **Define the tools available to this bot**:
|
||||
# * Modify the `ENABLED_TOOL_NAMES` list. Add the *string names* of the tools
|
||||
# (e.g., "get_weather", "lookup_crm_lead", "check_inventory") that this
|
||||
# specific bot should be allowed to use.
|
||||
# * These names **must exactly match** the keys defined in the
|
||||
# `GLOBAL_TOOL_REGISTRY` in `abot.py`.
|
||||
# * If a required tool doesn't exist yet:
|
||||
# a. Create its `.py` file (e.g., `crm_tool.py`).
|
||||
# b. Implement the tool function (e.g., `lookup_crm_lead(**kwargs)`), including
|
||||
# input validation logic within the function.
|
||||
# c. Define its `TOOL_DEFINITION` constant (the schema for the LLM).
|
||||
# d. Add the tool to the `GLOBAL_TOOL_REGISTRY` in `abot.py`, mapping its
|
||||
# name to its definition and function.
|
||||
# 4. **(No `call_tool` function needed here anymore!)** Tool dispatching and argument
|
||||
# validation are now handled centrally by the main application (`claude_functions.py`)
|
||||
# and within the tool implementation files themselves.
|
||||
# 5. **Add the new bot profile to `abot.py`:**
|
||||
# a. Import your new bot profile module at the top of `abot.py`:
|
||||
# `import sales_bot` (use the filename you created).
|
||||
# b. Find the `CHANNEL_BOT_MAPPING` dictionary within `abot.py`.
|
||||
# c. Add a new entry mapping the Slack Channel ID for the target channel
|
||||
# to your imported module. You can find the Channel ID from Slack
|
||||
# (often in the URL or channel details) or from the `channel_cache.json`.
|
||||
# Example:
|
||||
# CHANNEL_BOT_MAPPING = {
|
||||
# "C0D7LT3JA": techsupport_bot, # Existing techsupport
|
||||
# "C08B9A6RPN1": abot_channel_bot, # Existing test bot
|
||||
# "C0DQ40MH8": sales_bot, # Your new sales bot mapping
|
||||
# # Add other mappings here
|
||||
# }
|
||||
# 6. **Restart the Abot application** (`abot.py`). Mentions in the newly configured
|
||||
# channel should now be processed by your new bot profile using only its
|
||||
# enabled tools.
|
||||
|
||||
import logging
|
||||
# import json # No longer needed here
|
||||
# from typing import Dict, Any # No longer needed here
|
||||
|
||||
# --- Configuration constants for the [New Bot Name] Bot profile ---
|
||||
|
||||
# **STEP 2: Modify these values**
|
||||
|
||||
# Define the primary instructions for the LLM.
|
||||
SYSTEM_PROMPT = """
|
||||
You are Abot, a helpful AI assistant for First Step Internet.
|
||||
Your purpose in this channel is to generate Mikrotik CPE scripts using the associated tool.
|
||||
Be friendly, concise, professional, technical. Provide instructions for how to use the tool (which inputs the user must provide).
|
||||
Use the available tools (listed below) when needed.
|
||||
Format your responses clearly.
|
||||
Remember your Slack User ID is <@U08B3QR3C30>.
|
||||
Today's date and the current channel ID are provided below for context.
|
||||
"""
|
||||
|
||||
# Controls whether this bot profile queries Pinecone RAG for context.
|
||||
ENABLE_RAG_QUERY: bool = False # Default to False, so customers cannot see our chat history. Turn on for internal channels.
|
||||
|
||||
# Controls whether messages *from* the channel(s) associated with this profile are inserted into Pinecone.
|
||||
ENABLE_RAG_INSERT: bool = False # Default to True, so important messages are saved for future reference. Turn off for private channels.
|
||||
|
||||
# Choose the Anthropic model to use.
|
||||
MODEL = "claude-3-5-haiku-20241022" # Haiku is often a good balance
|
||||
|
||||
# Set the maximum number of tokens the LLM can generate. These are units of $$ for Bronson, currently.
|
||||
MAX_TOKENS = 1024
|
||||
|
||||
# Configure context lengths:
|
||||
SLACK_HISTORY_LENGTH = 5 # Recent Slack messages from channel log file.
|
||||
SLACK_RAG_HISTORY_LENGTH = 5 # Relevant historical messages retrieved via RAG. shouldn't work if ENABLE_RAG_QUERY is False
|
||||
MAX_HISTORY_LENGTH = 5 # LLM's conversational memory turns.
|
||||
|
||||
# A unique identifier string used in logging messages from this bot profile.
|
||||
# ** CHANGE THIS to the Slack channel name (e.g., "sales", "billing") **
|
||||
BOT_IDENTIFIER = "abot-scripting"
|
||||
|
||||
# --- Enabled Tools ---
|
||||
|
||||
# **STEP 3: Modify this list**
|
||||
# List the *string names* of tools this bot profile can use.
|
||||
# These names MUST correspond to keys in GLOBAL_TOOL_REGISTRY in abot.py.
|
||||
ENABLED_TOOL_NAMES = [
|
||||
# Example:
|
||||
# "lookup_crm_lead",
|
||||
# "check_inventory",
|
||||
# Example using existing tools:
|
||||
# "get_weather",
|
||||
# "get_user_info", # this is broken currently
|
||||
"generate_mikrotik_CPE_script", # Maybe this bot doesn't need this one
|
||||
# Add other enabled tool names here
|
||||
]
|
||||
|
||||
# --- END OF FILE template_bot.py ---
|
||||
Reference in New Issue
Block a user