Browse Source

AI prompt endpoint extended with mode

pull/4395/head
csehatt741 6 months ago
committed by Attila Cseh
parent
commit
fe08b49cfa
  1. 9
      apps/api/src/app/endpoints/ai/ai.controller.ts
  2. 6
      apps/api/src/app/endpoints/ai/ai.service.ts

9
apps/api/src/app/endpoints/ai/ai.controller.ts

@ -8,7 +8,7 @@ import { AiPromptResponse } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions';
import type { RequestWithUser } from '@ghostfolio/common/types';
import { Controller, Get, Inject, UseGuards } from '@nestjs/common';
import { Controller, Get, Inject, Param, UseGuards } from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
@ -21,14 +21,17 @@ export class AiController {
@Inject(REQUEST) private readonly request: RequestWithUser
) {}
@Get('prompt')
@Get('prompt/:mode')
@HasPermission(permissions.readAiPrompt)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async getPrompt(): Promise<AiPromptResponse> {
public async getPrompt(
@Param('mode') mode: 'analysis' | 'portfolio'
): Promise<AiPromptResponse> {
const prompt = await this.aiService.getPrompt({
impersonationId: undefined,
languageCode:
this.request.user.Settings.settings.language ?? DEFAULT_LANGUAGE_CODE,
mode,
userCurrency:
this.request.user.Settings.settings.baseCurrency ?? DEFAULT_CURRENCY,
userId: this.request.user.id

6
apps/api/src/app/endpoints/ai/ai.service.ts

@ -9,11 +9,13 @@ export class AiService {
public async getPrompt({
impersonationId,
languageCode,
mode,
userCurrency,
userId
}: {
impersonationId: string;
languageCode: string;
mode: 'analysis' | 'portfolio';
userCurrency: string;
userId: string;
}) {
@ -43,6 +45,10 @@ export class AiService {
)
];
if (mode === 'portfolio') {
return holdingsTable.join('\n');
}
return [
`You are a neutral financial assistant. Please analyze the following investment portfolio (base currency being ${userCurrency}) in simple words.`,
...holdingsTable,

Loading…
Cancel
Save