mirror of
https://github.com/arc53/DocsGPT.git
synced 2025-11-29 00:23:17 +00:00
fix: webhooks (#2175)
This commit is contained in:
@@ -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 = []
|
||||||
|
|||||||
Reference in New Issue
Block a user