Skip to content

Commit

Permalink
Merge pull request #313 from RamiAwar/handle-generate-title-exceptions
Browse files Browse the repository at this point in the history
feat: Add openai error handling to gen title call
  • Loading branch information
RamiAwar committed Sep 1, 2024
2 parents 03e6310 + 3ada82e commit 156ccd1
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 14 deletions.
25 changes: 16 additions & 9 deletions backend/dataline/services/conversation.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

from fastapi import Depends
from langchain_core.messages import AIMessage, BaseMessage, HumanMessage, SystemMessage
from openai._exceptions import APIError

from dataline.errors import UserFacingError
from dataline.models.conversation.schema import (
ConversationOut,
ConversationWithMessagesWithResultsOut,
Expand Down Expand Up @@ -36,7 +38,9 @@
from dataline.repositories.result import ResultRepository
from dataline.services.connection import ConnectionService
from dataline.services.llm_flow.graph import QueryGraphService
from dataline.services.llm_flow.llm_calls.conversation_title_generator import ConversationTitleGenerator
from dataline.services.llm_flow.llm_calls.conversation_title_generator import (
ConversationTitleGenerator,
)
from dataline.services.settings import SettingsService
from dataline.utils.utils import stream_event_str

Expand Down Expand Up @@ -73,15 +77,18 @@ async def generate_title(self, session: AsyncSession, conversation_id: UUID) ->
api_key = user_details.openai_api_key.get_secret_value()

first_message_content = conversation.messages[0].message.content
title_generator = ConversationTitleGenerator(
first_message=first_message_content, api_key=api_key, base_url=user_details.openai_base_url
)
title = title_generator.call().choices[0].message.content
if not title:
return "Untitled chat"
try:
title_generator = ConversationTitleGenerator(
first_message=first_message_content, api_key=api_key, base_url=user_details.openai_base_url
)
title = title_generator.call().choices[0].message.content
if not title:
return "Untitled chat"

updated_conversation = await self.update_conversation_name(session, conversation_id, title)
return updated_conversation.name
updated_conversation = await self.update_conversation_name(session, conversation_id, title)
return updated_conversation.name
except APIError as e:
raise UserFacingError(e)

async def create_conversation(
self,
Expand Down
18 changes: 13 additions & 5 deletions frontend/src/hooks/conversations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { getBackendStatusQuery } from "@/hooks/settings";
import { useEffect } from "react";
import { useParams } from "@tanstack/react-router";
import { useGetConnections } from "./connections";
import { isAxiosError } from "axios";

export const CONVERSATIONS_QUERY_KEY = ["CONVERSATIONS"];

Expand Down Expand Up @@ -98,11 +99,18 @@ export function useGenerateConversationTitle(options = {}) {
return useMutation({
mutationFn: async ({ id }: { id: string }) =>
(await api.generateConversationTitle(id)).data,
onError() {
enqueueSnackbar({
variant: "error",
message: "Error generating conversation title",
});
onError(error) {
if (isAxiosError(error) && error.response?.status === 400) {
enqueueSnackbar({
variant: "error",
message: error.response.data.detail,
});
} else {
enqueueSnackbar({
variant: "error",
message: "There was a problem generating a conversation title",
});
}
},
onSuccess() {
queryClient.invalidateQueries({ queryKey: CONVERSATIONS_QUERY_KEY });
Expand Down

0 comments on commit 156ccd1

Please sign in to comment.