about summary refs log tree commit diff stats
path: root/archive/2025/summer/bsc_gerg/src/main.py
blob: eec0b2cf1dd46f30119a1da1620ce02af1df6c96 (plain) (blame)
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
57
58
59
60
61
62
63
64
65
66
67
"""

This acts as the TerminologyResource


"""

import os
import shutil
import tempfile
from typing import Optional

from fastapi import FastAPI, UploadFile
from pydantic import BaseModel
from starlette.staticfiles import StaticFiles

from src.terminology.session import SessionManager, KnowledgeSourcePolicy
from src.terminology.terminology import Blackboard

app = FastAPI()

app.mount("/demo", StaticFiles(directory="html", html=True), name="demo")

class TextRequestBody(BaseModel):
    text: str
    context: Optional[str] = None


@app.post("/extractTerminology")
async def process_text(request: TextRequestBody) -> Blackboard:
    session = SessionManager.create_session(KnowledgeSourcePolicy(use_llm=True))
    blackboard = await session.extract_terminology(request.text, context=request.context)
    SessionManager.remove_session(session_id=session.id)
    return blackboard

@app.post("/processText")
async def process_text(request: TextRequestBody) -> Blackboard:
    session = SessionManager.create_session(KnowledgeSourcePolicy(use_llm=True))
    blackboard = await session.retrieve_term_definition(request.text, context=request.context)
    SessionManager.remove_session(session_id=session.id)
    return blackboard

@app.post("/processFile")
async def process_file(file: UploadFile) -> Blackboard:
    temp_dir = tempfile.gettempdir()
    file_path = os.path.join(temp_dir, file.filename)

    with open(file_path, "wb") as buffer:
        shutil.copyfileobj(file.file, buffer)

    session = SessionManager.create_session(KnowledgeSourcePolicy(use_llm=True))

    blackboard = await session.process_document(file_path)

    SessionManager.remove_session(session_id=session.id)

    os.unlink(file_path)

    return blackboard


@app.get("/simple")
async def process_simple(text: str) -> Blackboard:
    session = SessionManager.create_session(KnowledgeSourcePolicy(use_llm=True))
    blackboard = await session.retrieve_term_definition(text)
    SessionManager.remove_session(session_id=session.id)
    return blackboard