diff --git a/api/internal_services/annotator.py b/api/internal_services/annotator.py index 35e1eea8f48a812e2508cef67ff5890b3c919fc7..34e4c298914b072166a3fa7c93393d32cffe027c 100644 --- a/api/internal_services/annotator.py +++ b/api/internal_services/annotator.py @@ -71,6 +71,8 @@ def annotation_process(job): get_last_concept_index(), word_id ) + case 'NONE': + logger.error("No annotator configured, please provide an annotator before trying to add sentences.") def separate_intervals(data): diff --git a/api/internal_services/database.py b/api/internal_services/database.py index b8a287b60e1aa50704973e7aea995a026eb94ba9..9695e4100ed80cc24481f9a1316f9622dc06555a 100644 --- a/api/internal_services/database.py +++ b/api/internal_services/database.py @@ -31,12 +31,13 @@ def update_last_concept_index(value): def get_annotator_config(): result = db.search(where('key') == 'annotator_config') if not result: - created_object = {'key': 'annotator_config', 'value': { 'provider': 'GPT' }} + created_object = {'key': 'annotator_config', 'value': { 'provider': 'NONE' }} db.insert(created_object) - return 0 + return created_object['value'] else: return result[0]['value'] def update_annotator_config(value): + get_annotator_config() db.update({'value': value}, where('key') == 'annotator_config') return value \ No newline at end of file diff --git a/api/internal_services/gpt.py b/api/internal_services/gpt.py index a457c387f99d4f788d344c34e8d0391228e1a7dd..04f666dac68b5153b8f33ba194b0c0f554da9a0f 100644 --- a/api/internal_services/gpt.py +++ b/api/internal_services/gpt.py @@ -1,14 +1,12 @@ import json -import os -import traceback - from openai import OpenAI +from api.internal_services import database from api.internal_services.logger import logger -client = OpenAI() - def gpt_process(sentence): try: + annotator_config = database.get_annotator_config() + client = OpenAI(api_key=annotator_config['openai_key']) completion = client.chat.completions.create( model="gpt-4", messages=[ diff --git a/api/models/InfererConfig.py b/api/models/InfererConfig.py index 88b8d5892212bb0e434260da2edfb6aa540a6a51..ee4910c95dcefc41d645b8e784c40124fa0ced4c 100644 --- a/api/models/InfererConfig.py +++ b/api/models/InfererConfig.py @@ -2,5 +2,6 @@ from pydantic import BaseModel class InfererConfig(BaseModel): provider: str - model_id: str - server_url: str \ No newline at end of file + model_id: str | None = None + server_url: str | None = None + openai_key: str | None = None \ No newline at end of file diff --git a/api/routers/endpoints.py b/api/routers/endpoints.py index b1659d4f342f7f6d0c523f0a0fedee5076d52ff7..c609da975dea15abad2ce2e3586c41004b5a7624 100644 --- a/api/routers/endpoints.py +++ b/api/routers/endpoints.py @@ -40,9 +40,13 @@ def add_sentence_to_process(training_body: TrainingBody): @router.post("/actions/inferer/config") def add_sentence_to_process(infererConfig: InfererConfig): - new_config = {'model_id': infererConfig.provider} - if infererConfig.provider == 'BERT': - new_config['model_id'] = infererConfig.model_id - new_config['server_url'] = infererConfig.server_url + new_config = {'provider': infererConfig.provider} - database.update_annotator_config({'model_id': 'GPT'}) \ No newline at end of file + match infererConfig.provider: + case 'BERT': + new_config['model_id'] = infererConfig.model_id + new_config['server_url'] = infererConfig.server_url + case 'GPT': + new_config['openai_key'] = infererConfig.openai_key + + database.update_annotator_config(new_config) \ No newline at end of file diff --git a/microservices/inferer/setup.py b/microservices/inferer/setup.py index 35f4ac0d89a5da7c3cf0db30af65e0995f3d2809..6659f7ec68088c01a8775153041e61415a70e78a 100644 --- a/microservices/inferer/setup.py +++ b/microservices/inferer/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages setup( - name='ALA-Plateform-trainer', + name='ALA-Plateform-inferer', version='0.1', packages=find_packages(), install_requires=[