fix: webhooks (#2175)

This commit is contained in:
Alex
2025-11-25 14:08:22 +00:00
committed by GitHub
parent 67e0d222d1
commit dc2faf7a7e

View File

@@ -146,6 +146,14 @@ def upload_index(full_path, file_data):
def run_agent_logic(agent_config, input_data): def run_agent_logic(agent_config, input_data):
try: try:
from application.core.model_utils import (
get_api_key_for_provider,
get_default_model_id,
get_provider_from_model_id,
validate_model_id,
)
from application.utils import calculate_doc_token_budget
source = agent_config.get("source") source = agent_config.get("source")
retriever = agent_config.get("retriever", "classic") retriever = agent_config.get("retriever", "classic")
if isinstance(source, DBRef): if isinstance(source, DBRef):
@@ -160,31 +168,62 @@ def run_agent_logic(agent_config, input_data):
user_api_key = agent_config["key"] user_api_key = agent_config["key"]
agent_type = agent_config.get("agent_type", "classic") agent_type = agent_config.get("agent_type", "classic")
decoded_token = {"sub": agent_config.get("user")} decoded_token = {"sub": agent_config.get("user")}
json_schema = agent_config.get("json_schema")
prompt = get_prompt(prompt_id, db["prompts"]) prompt = get_prompt(prompt_id, db["prompts"])
agent = AgentCreator.create_agent(
agent_type, # Determine model_id: check agent's default_model_id, fallback to system default
endpoint="webhook", agent_default_model = agent_config.get("default_model_id", "")
llm_name=settings.LLM_PROVIDER, if agent_default_model and validate_model_id(agent_default_model):
model_id=settings.LLM_NAME, model_id = agent_default_model
api_key=settings.API_KEY, else:
user_api_key=user_api_key, model_id = get_default_model_id()
prompt=prompt,
chat_history=[], # Get provider and API key for the selected model
decoded_token=decoded_token, provider = get_provider_from_model_id(model_id) if model_id else settings.LLM_PROVIDER
attachments=[], system_api_key = get_api_key_for_provider(provider or settings.LLM_PROVIDER)
# Calculate proper doc_token_limit based on model's context window
history_token_limit = 2000 # Default for webhooks
doc_token_limit = calculate_doc_token_budget(
model_id=model_id, history_token_limit=history_token_limit
) )
retriever = RetrieverCreator.create_retriever( retriever = RetrieverCreator.create_retriever(
retriever, retriever,
source=source, source=source,
chat_history=[], chat_history=[],
prompt=prompt, prompt=prompt,
chunks=chunks, chunks=chunks,
token_limit=settings.DEFAULT_MAX_HISTORY, doc_token_limit=doc_token_limit,
model_id=settings.LLM_NAME, model_id=model_id,
user_api_key=user_api_key, user_api_key=user_api_key,
decoded_token=decoded_token, decoded_token=decoded_token,
) )
answer = agent.gen(query=input_data, retriever=retriever)
# Pre-fetch documents using the retriever
retrieved_docs = []
try:
docs = retriever.search(input_data)
if docs:
retrieved_docs = docs
except Exception as e:
logging.warning(f"Failed to retrieve documents: {e}")
agent = AgentCreator.create_agent(
agent_type,
endpoint="webhook",
llm_name=provider or settings.LLM_PROVIDER,
model_id=model_id,
api_key=system_api_key,
user_api_key=user_api_key,
prompt=prompt,
chat_history=[],
retrieved_docs=retrieved_docs,
decoded_token=decoded_token,
attachments=[],
json_schema=json_schema,
)
answer = agent.gen(query=input_data)
response_full = "" response_full = ""
thought = "" thought = ""
source_log_docs = [] source_log_docs = []