4
4
import sys
5
5
import textwrap
6
6
import time
7
+ from typing import TYPE_CHECKING
7
8
from collections import defaultdict
8
9
from typing import Any , Callable , Dict , List , Literal , Optional , Tuple
9
10
10
11
import numpy as np
11
- import optuna
12
- from optuna .distributions import CategoricalDistribution
13
12
14
13
import dspy
15
14
from dspy .evaluate .evaluate import Evaluate
26
25
set_signature ,
27
26
)
28
27
28
+ if TYPE_CHECKING :
29
+ import optuna
30
+
29
31
logger = logging .getLogger (__name__ )
30
32
31
33
# Constants
@@ -496,6 +498,7 @@ def _optimize_prompt_parameters(
496
498
minibatch_full_eval_steps : int ,
497
499
seed : int ,
498
500
) -> Optional [Any ]:
501
+ import optuna
499
502
# Run optimization
500
503
optuna .logging .set_verbosity (optuna .logging .WARNING )
501
504
logger .info ("==> STEP 3: FINDING OPTIMAL PROMPT PARAMETERS <==" )
@@ -727,7 +730,7 @@ def _select_and_insert_instructions_and_demos(
727
730
candidate_program : Any ,
728
731
instruction_candidates : Dict [int , List [str ]],
729
732
demo_candidates : Optional [List ],
730
- trial : optuna .trial .Trial ,
733
+ trial : " optuna.trial.Trial" ,
731
734
trial_logs : Dict ,
732
735
trial_num : int ,
733
736
) -> List [str ]:
@@ -756,6 +759,7 @@ def _select_and_insert_instructions_and_demos(
756
759
return chosen_params , raw_chosen_params
757
760
758
761
def _get_param_distributions (self , program , instruction_candidates , demo_candidates ):
762
+ from optuna .distributions import CategoricalDistribution
759
763
param_distributions = {}
760
764
761
765
for i in range (len (instruction_candidates )):
@@ -780,10 +784,11 @@ def _perform_full_evaluation(
780
784
score_data ,
781
785
best_score : float ,
782
786
best_program : Any ,
783
- study : optuna .Study ,
787
+ study : " optuna.Study" ,
784
788
instruction_candidates : List ,
785
789
demo_candidates : List ,
786
790
):
791
+ import optuna
787
792
logger .info (f"===== Trial { trial_num + 1 } / { adjusted_num_trials } - Full Evaluation =====" )
788
793
789
794
# Identify best program to evaluate fully
0 commit comments