about summary refs log tree commit diff stats
path: root/archive/2025/summer/bsc_gerg/src/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'archive/2025/summer/bsc_gerg/src/main.py')
-rw-r--r--archive/2025/summer/bsc_gerg/src/main.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/archive/2025/summer/bsc_gerg/src/main.py b/archive/2025/summer/bsc_gerg/src/main.py
new file mode 100644
index 000000000..eec0b2cf1
--- /dev/null
+++ b/archive/2025/summer/bsc_gerg/src/main.py
@@ -0,0 +1,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
\ No newline at end of file