aws-genai-llm-chatbot

Форк
0
1
import {
2
  BatchProcessor,
3
  EventType,
4
  processPartialResponse,
5
} from "@aws-lambda-powertools/batch";
6
import { Logger } from "@aws-lambda-powertools/logger";
7
import type {
8
  SQSEvent,
9
  SQSRecord,
10
  Context,
11
  SQSBatchResponse,
12
} from "aws-lambda";
13
import { graphQlQuery } from "./graphql";
14

15
const processor = new BatchProcessor(EventType.SQS);
16
const logger = new Logger();
17

18
const recordHandler = async (record: SQSRecord): Promise<void> => {
19
  const payload = record.body;
20
  if (payload) {
21
    const item = JSON.parse(payload);
22

23
    const req = JSON.parse(item.Message);
24
    logger.debug("Processed message", req);
25
    /***
26
     * Payload format
27
     * 
28
      payload: str = record.body
29
      message: dict = json.loads(payload)
30
      detail: dict = json.loads(message["Message"])
31
      logger.info(detail)
32
      user_id = detail["userId"]
33
    */
34

35
    const query = /* GraphQL */ `
36
        mutation Mutation {
37
          publishResponse (data: ${JSON.stringify(item.Message)}, sessionId: "${
38
            req.data.sessionId
39
          }", userId: "${req.userId}") {
40
            data
41
            sessionId
42
            userId
43
          }
44
        }
45
    `;
46
    //logger.info(query);
47
    const resp = await graphQlQuery(query);
48
    //logger.info(resp);
49
  }
50
};
51

52
export const handler = async (
53
  event: SQSEvent,
54
  context: Context
55
): Promise<SQSBatchResponse> => {
56
  logger.debug("Event", { event });
57
  event.Records = event.Records.sort((a, b) => {
58
    try {
59
      const x: number = JSON.parse(a.body).Message.data?.token?.sequenceNumber;
60
      const y: number = JSON.parse(b.body).Message.data?.token?.sequenceNumber;
61
      return x - y;
62
    } catch {
63
      return 0;
64
    }
65
  });
66
  return processPartialResponse(event, recordHandler, processor, {
67
    context,
68
  });
69
};
70

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.