mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-09 13:25:11 +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,
|
r: Optional[bool] = False,
|
||||||
score_threshold: Optional[Union[float, None]] = None,
|
score_threshold: Optional[Union[float, None]] = None,
|
||||||
dedupe: Optional[bool] = True,
|
dedupe: Optional[bool] = True,
|
||||||
|
client: Optional[str] = None,
|
||||||
):
|
):
|
||||||
results: List[SearchResponse] = []
|
results: List[SearchResponse] = []
|
||||||
if q is None or q == "":
|
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
|
# 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:
|
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
|
state.previous_query = user_query
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
@api.get("/update")
|
@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:
|
try:
|
||||||
state.search_index_lock.acquire()
|
state.search_index_lock.acquire()
|
||||||
state.model = configure_search(state.model, state.config, regenerate=force, t=t)
|
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:
|
else:
|
||||||
logger.info("📬 Processor reconfigured via API")
|
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"}
|
return {"status": "ok", "message": "khoj reloaded"}
|
||||||
|
|
||||||
|
|
||||||
@api.get("/chat")
|
@api.get("/chat")
|
||||||
def chat(q: Optional[str] = None):
|
def chat(q: Optional[str] = None, client: Optional[str] = None):
|
||||||
if (
|
if (
|
||||||
state.processor_config is None
|
state.processor_config is None
|
||||||
or state.processor_config.conversation 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", []),
|
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}
|
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
|
from collections import OrderedDict
|
||||||
import datetime
|
import datetime
|
||||||
from importlib import import_module
|
from importlib import import_module
|
||||||
|
from importlib.metadata import version
|
||||||
import logging
|
import logging
|
||||||
from os import path
|
from os import path
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import platform
|
import platform
|
||||||
import requests
|
|
||||||
import sys
|
import sys
|
||||||
from time import perf_counter
|
from time import perf_counter
|
||||||
import torch
|
import torch
|
||||||
@@ -184,6 +184,7 @@ def log_telemetry(telemetry_type: str, api: str = None, client: str = None, app_
|
|||||||
request_body = {
|
request_body = {
|
||||||
"telemetry_type": telemetry_type,
|
"telemetry_type": telemetry_type,
|
||||||
"server_id": get_server_id(),
|
"server_id": get_server_id(),
|
||||||
|
"server_version": version("khoj-assistant"),
|
||||||
"os": platform.system(),
|
"os": platform.system(),
|
||||||
"timestamp": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
"timestamp": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user