mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-06 13:22:12 +00:00
Make server API endpoints accept client as query param
- The chat, search and update API will accept client as request param. - This will allow logging the client from which these APIs was called.
This commit is contained in:
@@ -70,6 +70,7 @@ def search(
|
||||
r: Optional[bool] = False,
|
||||
score_threshold: Optional[Union[float, None]] = None,
|
||||
dedupe: Optional[bool] = True,
|
||||
client: Optional[str] = None,
|
||||
):
|
||||
results: List[SearchResponse] = []
|
||||
if q is None or q == "":
|
||||
@@ -181,14 +182,16 @@ def search(
|
||||
|
||||
# Only log telemetry if query is new and not a continuation of previous query
|
||||
if state.previous_query is None or state.previous_query not in user_query:
|
||||
state.telemetry += [log_telemetry(telemetry_type="api", api="search", app_config=state.config.app)]
|
||||
state.telemetry += [
|
||||
log_telemetry(telemetry_type="api", api="search", client=client, app_config=state.config.app)
|
||||
]
|
||||
state.previous_query = user_query
|
||||
|
||||
return results
|
||||
|
||||
|
||||
@api.get("/update")
|
||||
def update(t: Optional[SearchType] = None, force: Optional[bool] = False):
|
||||
def update(t: Optional[SearchType] = None, force: Optional[bool] = False, client: Optional[str] = None):
|
||||
try:
|
||||
state.search_index_lock.acquire()
|
||||
state.model = configure_search(state.model, state.config, regenerate=force, t=t)
|
||||
@@ -207,13 +210,13 @@ def update(t: Optional[SearchType] = None, force: Optional[bool] = False):
|
||||
else:
|
||||
logger.info("📬 Processor reconfigured via API")
|
||||
|
||||
state.telemetry += [log_telemetry(telemetry_type="api", api="update", app_config=state.config.app)]
|
||||
state.telemetry += [log_telemetry(telemetry_type="api", api="update", client=client, app_config=state.config.app)]
|
||||
|
||||
return {"status": "ok", "message": "khoj reloaded"}
|
||||
|
||||
|
||||
@api.get("/chat")
|
||||
def chat(q: Optional[str] = None):
|
||||
def chat(q: Optional[str] = None, client: Optional[str] = None):
|
||||
if (
|
||||
state.processor_config is None
|
||||
or state.processor_config.conversation is None
|
||||
@@ -277,6 +280,6 @@ def chat(q: Optional[str] = None):
|
||||
conversation_log=meta_log.get("chat", []),
|
||||
)
|
||||
|
||||
state.telemetry += [log_telemetry(telemetry_type="api", api="chat", app_config=state.config.app)]
|
||||
state.telemetry += [log_telemetry(telemetry_type="api", api="chat", client=client, app_config=state.config.app)]
|
||||
|
||||
return {"status": status, "response": gpt_response, "context": compiled_references}
|
||||
|
||||
@@ -3,11 +3,11 @@ from __future__ import annotations # to avoid quoting type hints
|
||||
from collections import OrderedDict
|
||||
import datetime
|
||||
from importlib import import_module
|
||||
from importlib.metadata import version
|
||||
import logging
|
||||
from os import path
|
||||
from pathlib import Path
|
||||
import platform
|
||||
import requests
|
||||
import sys
|
||||
from time import perf_counter
|
||||
import torch
|
||||
@@ -184,6 +184,7 @@ def log_telemetry(telemetry_type: str, api: str = None, client: str = None, app_
|
||||
request_body = {
|
||||
"telemetry_type": telemetry_type,
|
||||
"server_id": get_server_id(),
|
||||
"server_version": version("khoj-assistant"),
|
||||
"os": platform.system(),
|
||||
"timestamp": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user