Skip to content

Commit

Permalink
Merge pull request #831 from ManishMadan2882/feature/search-endpoint
Browse files Browse the repository at this point in the history
integrate /api/search endpoint, get sources post stream
  • Loading branch information
dartpain authored Jan 15, 2024
2 parents 6a70e3e + f4f0564 commit 1713d69
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 33 deletions.
78 changes: 64 additions & 14 deletions frontend/src/conversation/conversationApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,20 @@ export function fetchAnswerApi(
promptId: string | null,
): Promise<
| {
result: any;
answer: any;
sources: any;
conversationId: any;
query: string;
}
result: any;
answer: any;
sources: any;
conversationId: any;
query: string;
}
| {
result: any;
answer: any;
sources: any;
query: string;
conversationId: any;
title: any;
}
result: any;
answer: any;
sources: any;
query: string;
conversationId: any;
title: any;
}
> {
let namePath = selectedDocs.name;
if (selectedDocs.language === namePath) {
Expand Down Expand Up @@ -128,7 +128,6 @@ export function fetchAnswerSteaming(
conversation_id: conversationId,
prompt_id: promptId,
};

fetch(apiHost + '/stream', {
method: 'POST',
headers: {
Expand Down Expand Up @@ -183,7 +182,58 @@ export function fetchAnswerSteaming(
});
});
}
export function searchEndpoint(
question: string,
apiKey: string,
selectedDocs: Doc,
conversation_id: string | null,
history: Array<any> = [],
) {
/*
"active_docs": "default",
"question": "Summarise",
"conversation_id": null,
"history": "[]" */
let namePath = selectedDocs.name;
if (selectedDocs.language === namePath) {
namePath = '.project';
}

let docPath = 'default';
if (selectedDocs.location === 'local') {
docPath = 'local' + '/' + selectedDocs.name + '/';
} else if (selectedDocs.location === 'remote') {
docPath =
selectedDocs.language +
'/' +
namePath +
'/' +
selectedDocs.version +
'/' +
selectedDocs.model +
'/';
}

const body = {
question: question,
active_docs: docPath,
conversation_id,
history
};
return fetch(`${apiHost}/api/search`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(
body
),
}).then((response) => response.json())
.then((data) => {
return data;
})
.catch(err => console.log(err))
}
export function sendFeedback(
prompt: string,
response: string,
Expand Down
39 changes: 20 additions & 19 deletions frontend/src/conversation/conversationSlice.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';
import store from '../store';
import { fetchAnswerApi, fetchAnswerSteaming } from './conversationApi';
import { searchEndpoint } from './conversationApi';
import { Answer, ConversationState, Query, Status } from './conversationModels';
import { getConversations } from '../preferences/preferenceApi';
import { setConversations } from '../preferences/preferenceSlice';
Expand Down Expand Up @@ -29,6 +30,7 @@ export const fetchAnswer = createAsyncThunk<Answer, { question: string }>(
(event) => {
const data = JSON.parse(event.data);


// check if the 'end' event has been received
if (data.type === 'end') {
// set status to 'idle'
Expand All @@ -40,24 +42,22 @@ export const fetchAnswer = createAsyncThunk<Answer, { question: string }>(
.catch((error) => {
console.error('Failed to fetch conversations: ', error);
});
} else if (data.type === 'source') {
// check if data.metadata exists
let result;
if (data.metadata && data.metadata.title) {
const titleParts = data.metadata.title.split('/');
result = {
title: titleParts[titleParts.length - 1],
text: data.doc,
};
} else {
result = { title: data.doc, text: data.doc };
}
dispatch(
updateStreamingSource({
index: state.conversation.queries.length - 1,
query: { sources: [result] },
}),
);

searchEndpoint( //search for sources post streaming
question,
state.preference.apiKey,
state.preference.selectedDocs!,
state.conversation.conversationId,
state.conversation.queries
).then(sources => {
//dispatch streaming sources
dispatch(
updateStreamingSource({
index: state.conversation.queries.length - 1,
query: { sources },
}),
);
});
} else if (data.type === 'id') {
dispatch(
updateConversationId({
Expand Down Expand Up @@ -165,9 +165,10 @@ export const conversationSlice = createSlice({
state,
action: PayloadAction<{ index: number; query: Partial<Query> }>,
) {

const { index, query } = action.payload;
if (!state.queries[index].sources) {
state.queries[index].sources = [query.sources![0]];
state.queries[index].sources = query?.sources;
} else {
state.queries[index].sources!.push(query.sources![0]);
}
Expand Down

0 comments on commit 1713d69

Please sign in to comment.