From 158f93ecf4371cca2e2f4250d3133aea83ab6bf8 Mon Sep 17 00:00:00 2001 From: amirrr <6696894+amirrr@users.noreply.github.com> Date: Sun, 7 Jul 2024 13:44:28 +0200 Subject: [PATCH] structuring --- server/claude_function.py | 69 +++++++++++++++++++ server/controllers/assisstant.py | 3 +- .../{ => condition}/behavior/__init__.py | 0 .../{ => condition}/behavior/description.py | 0 .../{ => condition}/behavior/focal.py | 0 .../{ => condition}/behavior/name.py | 0 .../{ => condition}/behavior/parent.py | 0 .../{ => condition}/behavior/priority.py | 0 server/features/experiments/parent.py | 30 ++++++++ server/{assistant.py => gpt_assistant.py} | 8 +-- server/test_assistant.py | 2 +- 11 files changed, 105 insertions(+), 7 deletions(-) create mode 100644 server/claude_function.py rename server/features/experiments/{ => condition}/behavior/__init__.py (100%) rename server/features/experiments/{ => condition}/behavior/description.py (100%) rename server/features/experiments/{ => condition}/behavior/focal.py (100%) rename server/features/experiments/{ => condition}/behavior/name.py (100%) rename server/features/experiments/{ => condition}/behavior/parent.py (100%) rename server/features/experiments/{ => condition}/behavior/priority.py (100%) create mode 100644 server/features/experiments/parent.py rename server/{assistant.py => gpt_assistant.py} (98%) diff --git a/server/claude_function.py b/server/claude_function.py new file mode 100644 index 0000000..1913e42 --- /dev/null +++ b/server/claude_function.py @@ -0,0 +1,69 @@ +""" +Runs the Claude function call API. +""" + +from typing import List + + +def get_all_features() -> List[str]: + """ + Gets all the available features. + + Returns: + - List of all available features. + """ + + experiments_features = [ + "features.experiments.experiment_name", + "features.experiments.experiment_description", + "features.experiments.participant_source", + "features.experiments.participant_source_category", + "features.experiments.units_randomized", + "features.experiments.units_analyzed", + "features.experiments.sample_size_randomized", + "features.experiments.sample_size_analyzed", + "features.experiments.sample_size_notes", + "features.experiments.adults", + "features.experiments.age_mean", + "features.experiments.age_sd", + "features.experiments.female_perc", + "features.experiments.male_perc", + "features.experiments.gender_other", + "features.experiments.language", + "features.experiments.language_secondary", + "features.experiments.compensation", + "features.experiments.demographics_conditions", + "features.experiments.population_other", + "features.experiments.condition.name", + "features.experiments.condition.description", + "features.experiments.condition.type", + "features.experiments.condition.message", + "features.experiments.condition.behavior.name", + "features.experiments.condition.behavior.description", + "features.experiments.condition.behavior.priority", + "features.experiments.condition.behavior.focal", + ] + + +experiments_function_call = { + "name": "define_experiments_conditions_and_behaviors", + "description": "Define the conditions and behaviors in each experiment. Each condition and behavior should be a separate object with specified properties and values under the experiments object.", + "parameters": { + "type": "object", + "properties": { + "experiments": { + "type": "array", + "description": "Array of experiments objects with detailed properties.", + "items": { + "type": "object", + "properties": { + "conditions": {}, + }, + }, + }, + }, + "required": [ + "experiments", + ], + }, +} diff --git a/server/controllers/assisstant.py b/server/controllers/assisstant.py index 68677e4..33ab7f8 100644 --- a/server/controllers/assisstant.py +++ b/server/controllers/assisstant.py @@ -3,12 +3,11 @@ """ import os -import json from flask import jsonify, make_response, request from flask_restful import Resource -from assistant import AssistantException, call_asssistant_api +from gpt_assistant import AssistantException, call_asssistant_api UPLOAD_DIRECTORY = "../paper/" diff --git a/server/features/experiments/behavior/__init__.py b/server/features/experiments/condition/behavior/__init__.py similarity index 100% rename from server/features/experiments/behavior/__init__.py rename to server/features/experiments/condition/behavior/__init__.py diff --git a/server/features/experiments/behavior/description.py b/server/features/experiments/condition/behavior/description.py similarity index 100% rename from server/features/experiments/behavior/description.py rename to server/features/experiments/condition/behavior/description.py diff --git a/server/features/experiments/behavior/focal.py b/server/features/experiments/condition/behavior/focal.py similarity index 100% rename from server/features/experiments/behavior/focal.py rename to server/features/experiments/condition/behavior/focal.py diff --git a/server/features/experiments/behavior/name.py b/server/features/experiments/condition/behavior/name.py similarity index 100% rename from server/features/experiments/behavior/name.py rename to server/features/experiments/condition/behavior/name.py diff --git a/server/features/experiments/behavior/parent.py b/server/features/experiments/condition/behavior/parent.py similarity index 100% rename from server/features/experiments/behavior/parent.py rename to server/features/experiments/condition/behavior/parent.py diff --git a/server/features/experiments/behavior/priority.py b/server/features/experiments/condition/behavior/priority.py similarity index 100% rename from server/features/experiments/behavior/priority.py rename to server/features/experiments/condition/behavior/priority.py diff --git a/server/features/experiments/parent.py b/server/features/experiments/parent.py new file mode 100644 index 0000000..0e45798 --- /dev/null +++ b/server/features/experiments/parent.py @@ -0,0 +1,30 @@ +""" +Experiments feature module. +""" + +from features.gpt_feature import GPTFeature + + +class Feature(GPTFeature): + """ + Experiments feature. This feature is responsible for indicating the experiments in the study. + """ + + def __init__(self, *args, **kwargs): + feature_name = "experiments" + feature_type = "object" + feature_prompt = ( + "Define the experiments in this paper. " + "Each experiment should be a separate object with the following properties. " # This could be moved to where aggregation is done + ) + feature_enum = None + feature_description = "The experiments in a paper." + super().__init__( + feature_name, + feature_type, + feature_prompt, + feature_enum, + feature_description, + *args, + **kwargs + ) diff --git a/server/assistant.py b/server/gpt_assistant.py similarity index 98% rename from server/assistant.py rename to server/gpt_assistant.py index 01599ec..fbd41ea 100644 --- a/server/assistant.py +++ b/server/gpt_assistant.py @@ -56,10 +56,10 @@ def get_all_features() -> tuple[List[str], List[str]]: "features.experiments.condition.message", ], [ - "features.experiments.behavior.name", - "features.experiments.behavior.description", - "features.experiments.behavior.priority", - "features.experiments.behavior.focal", + "features.experiments.condition.behavior.name", + "features.experiments.condition.behavior.description", + "features.experiments.condition.behavior.priority", + "features.experiments.condition.behavior.focal", ], ) diff --git a/server/test_assistant.py b/server/test_assistant.py index 303dbbd..da73acb 100644 --- a/server/test_assistant.py +++ b/server/test_assistant.py @@ -1,6 +1,6 @@ import unittest from unittest.mock import Mock, patch -from .assistant import call_asssistant_api +from .gpt_assistant import call_asssistant_api class TestAssistantAPI(unittest.TestCase):