File size: 2,514 Bytes
62151d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Python Interview Task

## Scenario

You are asked to build a Python web API that analyzes plain text transcripts and returns a summary along with a list of next actions. Your implementation should clearly demonstrate good architectural practices.

## Provided Adapter (do not implement)

- **OpenAI Adapter**: Sends the transcript text to OpenAI's API along with a predefined, hardcoded prompt. This adapter returns a DTO.
- The transcript, system prompt, and user prompt are provided.

A file defining the interface (ports) for this adapter will be provided.

## Requirements (Point 1)

### Analyze Transcript

- Create an HTTP endpoint (e.g., using FastAPI or Flask) that accepts GET requests containing a plain text transcript.
- Perform basic input validation (when the transcript is empty)
- Invoke the provided OpenAI adapter to analyze the transcript.
- Store the analysis result in memory (an external DB is not required).
- Return a response containing:
  - A unique ID.
  - A summary of the transcript.
  - A suggested list of next steps or actions based on the transcript analysis.

### Get a Transcript by ID

- Create an HTTP endpoint to get transcript analysis by ID.

### Additional Requirements

- Adhere strictly to the interfaces defined in the provided ports file.

## Optional Advanced Requirements (Point 2)

- Build an additional endpoint to support concurrent analysis of multiple transcripts within a single request:
  - Implement asynchronous processing (e.g., using asyncio).
  - Handle multiple transcript analyses simultaneously without blocking the main API thread.

## Success Criteria

- Code readability, modularity, and adherence to best practices.
- Functional correctness of the API.
- Swagger
- Clear error handling and appropriate HTTP response statuses.
- Testability of the code (clear separation of concerns, ease of unit testing).
- (Optional) Effective asynchronous processing implementation.

## Hints

- You will find a test running openai adapter. This will be the documentation to build the prompt to analyze the transcript
- The provided OpenAI adapter utilizes structured output, allowing you to specify a system prompt, a user prompt, and a DTO. The adapter then returns a model instance populated according to the DTO's defined structure.
- Create a DTO that contains the requested fields.
- Hexagonal (or clean) architecture consists of distinct layers. Consider creating a separate model layer for the LLM responses. Pay attention to avoiding layer coupling.