quivr/frontend/lib/api/assistants/assistants.ts
Antoine Dewez 803f304390
feat(frontend): Quivr Assistants (#2448)
# Description

Please include a summary of the changes and the related issue. Please
also include relevant motivation and context.

## Checklist before requesting a review

Please delete options that are not relevant.

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented hard-to-understand areas
- [ ] I have ideally added tests that prove my fix is effective or that
my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged

## Screenshots (if appropriate):


<!--
ELLIPSIS_HIDDEN
-->
----

| 🚀 This description was created by
[Ellipsis](https://www.ellipsis.dev) for commit
3e95f1a5aa |
|--------|

### Summary:
This PR introduces the 'Quivr Assistants' feature with new frontend
components and pages, backend routes and DTOs changes, and a minor
update in the `processAssistant` function.

**Key points**:
- Introduced the 'Quivr Assistants' feature with new frontend components
and pages, backend routes and DTOs changes.
- Added new `AssistantModal` component in
`/frontend/app/assistants/AssistantModal/AssistantModal.tsx`.
- Added new `InputsStep` and `OutputsStep` components for handling
assistant inputs and outputs.
- Added new `AssistantModal` page in
`/frontend/app/assistants/page.tsx`.
- Added new API endpoints and types for assistants in
`/frontend/lib/api/assistants/assistants.ts` and
`/frontend/lib/api/assistants/types.ts`.
- Updated backend assistant routes and DTOs in
`backend/modules/assistant/controller/assistant_routes.py`,
`backend/modules/assistant/dto/inputs.py`,
`backend/modules/assistant/ito/difference.py`, and
`backend/modules/assistant/ito/summary.py`.
- Made a minor update in the `processAssistant` function in the
`/frontend/lib/api/assistants/assistants.ts` file.


----
Generated with ❤️ by [ellipsis.dev](https://www.ellipsis.dev)

<!--
ELLIPSIS_HIDDEN
-->
2024-04-19 01:36:36 -07:00

39 lines
915 B
TypeScript

import { AxiosInstance } from "axios";
import { Assistant, ProcessAssistantRequest } from "./types";
export const getAssistants = async (
axiosInstance: AxiosInstance
): Promise<Assistant[] | undefined> => {
return (await axiosInstance.get<Assistant[] | undefined>("/assistants")).data;
};
export const processAssistant = async (
axiosInstance: AxiosInstance,
input: ProcessAssistantRequest,
files: File[]
): Promise<string | undefined> => {
const formData = new FormData();
formData.append(
"input",
JSON.stringify({
name: input.name,
inputs: {
files: input.inputs.files,
urls: input.inputs.urls,
texts: input.inputs.texts,
},
outputs: input.outputs,
})
);
files.forEach((file) => {
formData.append("files", file);
});
return (
await axiosInstance.post<string | undefined>("/assistant/process", formData)
).data;
};