When diagram generation fails, save to conversation log

- Update tool name when choosing tools to execute
This commit is contained in:
sabaimran 2024-11-17 13:23:12 -08:00
parent 7e662a05f8
commit 0eba6ce315
5 changed files with 37 additions and 18 deletions

View file

@ -46,7 +46,7 @@ from khoj.routers.helpers import (
FeedbackData, FeedbackData,
acreate_title_from_history, acreate_title_from_history,
agenerate_chat_response, agenerate_chat_response,
aget_relevant_information_sources, aget_relevant_tools_to_execute,
construct_automation_created_message, construct_automation_created_message,
create_automation, create_automation,
gather_raw_query_files, gather_raw_query_files,
@ -752,7 +752,7 @@ async def chat(
attached_file_context = gather_raw_query_files(query_files) attached_file_context = gather_raw_query_files(query_files)
if conversation_commands == [ConversationCommand.Default] or is_automated_task: if conversation_commands == [ConversationCommand.Default] or is_automated_task:
conversation_commands = await aget_relevant_information_sources( conversation_commands = await aget_relevant_tools_to_execute(
q, q,
meta_log, meta_log,
is_automated_task, is_automated_task,
@ -1164,8 +1164,27 @@ async def chat(
inferred_queries.append(better_diagram_description_prompt) inferred_queries.append(better_diagram_description_prompt)
diagram_description = excalidraw_diagram_description diagram_description = excalidraw_diagram_description
else: else:
async for result in send_llm_response(f"Failed to generate diagram. Please try again later."): error_message = "Failed to generate diagram. Please try again later."
async for result in send_llm_response(error_message):
yield result yield result
await sync_to_async(save_to_conversation_log)(
q,
error_message,
user,
meta_log,
user_message_time,
inferred_queries=[better_diagram_description_prompt],
client_application=request.user.client_app,
conversation_id=conversation_id,
compiled_references=compiled_references,
online_results=online_results,
code_results=code_results,
query_images=uploaded_images,
train_of_thought=train_of_thought,
raw_query_files=raw_query_files,
tracer=tracer,
)
return return
content_obj = { content_obj = {

View file

@ -336,7 +336,7 @@ async def acheck_if_safe_prompt(system_prompt: str, user: KhojUser = None, lax:
return is_safe, reason return is_safe, reason
async def aget_relevant_information_sources( async def aget_relevant_tools_to_execute(
query: str, query: str,
conversation_history: dict, conversation_history: dict,
is_task: bool, is_task: bool,

View file

@ -7,7 +7,7 @@ from freezegun import freeze_time
from khoj.database.models import Agent, Entry, KhojUser from khoj.database.models import Agent, Entry, KhojUser
from khoj.processor.conversation import prompts from khoj.processor.conversation import prompts
from khoj.processor.conversation.utils import message_to_log from khoj.processor.conversation.utils import message_to_log
from khoj.routers.helpers import aget_relevant_information_sources from khoj.routers.helpers import aget_relevant_tools_to_execute
from tests.helpers import ConversationFactory from tests.helpers import ConversationFactory
SKIP_TESTS = True SKIP_TESTS = True
@ -735,7 +735,7 @@ async def test_get_correct_tools_online(client_offline_chat):
user_query = "What's the weather in Patagonia this week?" user_query = "What's the weather in Patagonia this week?"
# Act # Act
tools = await aget_relevant_information_sources(user_query, {}, is_task=False) tools = await aget_relevant_tools_to_execute(user_query, {}, is_task=False)
# Assert # Assert
tools = [tool.value for tool in tools] tools = [tool.value for tool in tools]
@ -750,7 +750,7 @@ async def test_get_correct_tools_notes(client_offline_chat):
user_query = "Where did I go for my first battleship training?" user_query = "Where did I go for my first battleship training?"
# Act # Act
tools = await aget_relevant_information_sources(user_query, {}, is_task=False) tools = await aget_relevant_tools_to_execute(user_query, {}, is_task=False)
# Assert # Assert
tools = [tool.value for tool in tools] tools = [tool.value for tool in tools]
@ -765,7 +765,7 @@ async def test_get_correct_tools_online_or_general_and_notes(client_offline_chat
user_query = "What's the highest point in Patagonia and have I been there?" user_query = "What's the highest point in Patagonia and have I been there?"
# Act # Act
tools = await aget_relevant_information_sources(user_query, {}, is_task=False) tools = await aget_relevant_tools_to_execute(user_query, {}, is_task=False)
# Assert # Assert
tools = [tool.value for tool in tools] tools = [tool.value for tool in tools]
@ -782,7 +782,7 @@ async def test_get_correct_tools_general(client_offline_chat):
user_query = "How many noble gases are there?" user_query = "How many noble gases are there?"
# Act # Act
tools = await aget_relevant_information_sources(user_query, {}, is_task=False) tools = await aget_relevant_tools_to_execute(user_query, {}, is_task=False)
# Assert # Assert
tools = [tool.value for tool in tools] tools = [tool.value for tool in tools]
@ -806,7 +806,7 @@ async def test_get_correct_tools_with_chat_history(client_offline_chat, default_
chat_history = create_conversation(chat_log, default_user2) chat_history = create_conversation(chat_log, default_user2)
# Act # Act
tools = await aget_relevant_information_sources(user_query, chat_history, is_task=False) tools = await aget_relevant_tools_to_execute(user_query, chat_history, is_task=False)
# Assert # Assert
tools = [tool.value for tool in tools] tools = [tool.value for tool in tools]

View file

@ -8,7 +8,7 @@ from freezegun import freeze_time
from khoj.processor.conversation.openai.gpt import converse, extract_questions from khoj.processor.conversation.openai.gpt import converse, extract_questions
from khoj.processor.conversation.utils import message_to_log from khoj.processor.conversation.utils import message_to_log
from khoj.routers.helpers import ( from khoj.routers.helpers import (
aget_relevant_information_sources, aget_relevant_tools_to_execute,
generate_online_subqueries, generate_online_subqueries,
infer_webpage_urls, infer_webpage_urls,
schedule_query, schedule_query,
@ -538,7 +538,7 @@ async def test_select_data_sources_actor_chooses_to_search_notes(
chat_client, user_query, expected_conversation_commands chat_client, user_query, expected_conversation_commands
): ):
# Act # Act
conversation_commands = await aget_relevant_information_sources(user_query, {}, False, False) conversation_commands = await aget_relevant_tools_to_execute(user_query, {}, False, False)
# Assert # Assert
assert set(expected_conversation_commands) == set(conversation_commands) assert set(expected_conversation_commands) == set(conversation_commands)

View file

@ -8,7 +8,7 @@ from freezegun import freeze_time
from khoj.database.models import Agent, Entry, KhojUser, LocalPdfConfig from khoj.database.models import Agent, Entry, KhojUser, LocalPdfConfig
from khoj.processor.conversation import prompts from khoj.processor.conversation import prompts
from khoj.processor.conversation.utils import message_to_log from khoj.processor.conversation.utils import message_to_log
from khoj.routers.helpers import aget_relevant_information_sources from khoj.routers.helpers import aget_relevant_tools_to_execute
from tests.helpers import ConversationFactory from tests.helpers import ConversationFactory
# Initialize variables for tests # Initialize variables for tests
@ -719,7 +719,7 @@ async def test_get_correct_tools_online(chat_client):
user_query = "What's the weather in Patagonia this week?" user_query = "What's the weather in Patagonia this week?"
# Act # Act
tools = await aget_relevant_information_sources(user_query, {}, False, False) tools = await aget_relevant_tools_to_execute(user_query, {}, False, False)
# Assert # Assert
tools = [tool.value for tool in tools] tools = [tool.value for tool in tools]
@ -734,7 +734,7 @@ async def test_get_correct_tools_notes(chat_client):
user_query = "Where did I go for my first battleship training?" user_query = "Where did I go for my first battleship training?"
# Act # Act
tools = await aget_relevant_information_sources(user_query, {}, False, False) tools = await aget_relevant_tools_to_execute(user_query, {}, False, False)
# Assert # Assert
tools = [tool.value for tool in tools] tools = [tool.value for tool in tools]
@ -749,7 +749,7 @@ async def test_get_correct_tools_online_or_general_and_notes(chat_client):
user_query = "What's the highest point in Patagonia and have I been there?" user_query = "What's the highest point in Patagonia and have I been there?"
# Act # Act
tools = await aget_relevant_information_sources(user_query, {}, False, False) tools = await aget_relevant_tools_to_execute(user_query, {}, False, False)
# Assert # Assert
tools = [tool.value for tool in tools] tools = [tool.value for tool in tools]
@ -766,7 +766,7 @@ async def test_get_correct_tools_general(chat_client):
user_query = "How many noble gases are there?" user_query = "How many noble gases are there?"
# Act # Act
tools = await aget_relevant_information_sources(user_query, {}, False, False) tools = await aget_relevant_tools_to_execute(user_query, {}, False, False)
# Assert # Assert
tools = [tool.value for tool in tools] tools = [tool.value for tool in tools]
@ -790,7 +790,7 @@ async def test_get_correct_tools_with_chat_history(chat_client):
chat_history = generate_history(chat_log) chat_history = generate_history(chat_log)
# Act # Act
tools = await aget_relevant_information_sources(user_query, chat_history, False, False) tools = await aget_relevant_tools_to_execute(user_query, chat_history, False, False)
# Assert # Assert
tools = [tool.value for tool in tools] tools = [tool.value for tool in tools]