|
46 | 46 | LastOfBlock, |
47 | 47 | LitellmModelBlock, |
48 | 48 | LitellmParameters, |
| 49 | + LocalizedExpression, |
49 | 50 | LocationType, |
50 | 51 | Message, |
51 | 52 | MessageBlock, |
@@ -917,8 +918,12 @@ def process_condition_of( |
917 | 918 | EXPR_END_STRING = "}" |
918 | 919 |
|
919 | 920 |
|
920 | | -def process_expr(scope: ScopeType, expr: Any, loc: LocationType) -> Any: |
| 921 | +def process_expr( |
| 922 | + scope: ScopeType, expr: Any, loc: LocationType |
| 923 | +) -> Any: # pylint: disable=too-many-return-statements |
921 | 924 | result: Any |
| 925 | + if isinstance(expr, LocalizedExpression): |
| 926 | + return process_expr(scope, expr.expr, loc) |
922 | 927 | if isinstance(expr, str): |
923 | 928 | try: |
924 | 929 | if expr.startswith(EXPR_START_STRING) and expr.endswith(EXPR_END_STRING): |
@@ -1001,7 +1006,7 @@ def step_call_model( |
1001 | 1006 | ], |
1002 | 1007 | ]: |
1003 | 1008 | # evaluate model name |
1004 | | - _, concrete_block = process_expr_of(block, "model", scope, loc) |
| 1009 | + model, concrete_block = process_expr_of(block, "model", scope, loc) |
1005 | 1010 | # evaluate model params |
1006 | 1011 | match concrete_block: |
1007 | 1012 | case BamModelBlock(): |
@@ -1060,9 +1065,7 @@ def get_transformed_inputs(kwargs): |
1060 | 1065 | if "input" in litellm_params: |
1061 | 1066 | append_log(state, "Model Input", litellm_params["input"]) |
1062 | 1067 | else: |
1063 | | - append_log( |
1064 | | - state, "Model Input", messages_to_str(concrete_block.model, model_input) |
1065 | | - ) |
| 1068 | + append_log(state, "Model Input", messages_to_str(model, model_input)) |
1066 | 1069 | background: Messages = [msg] |
1067 | 1070 | result = msg["content"] |
1068 | 1071 | append_log(state, "Model Output", result) |
@@ -1104,6 +1107,8 @@ def generate_client_response_streaming( |
1104 | 1107 | model_input: Messages, |
1105 | 1108 | ) -> Generator[YieldMessage, Any, Message]: |
1106 | 1109 | msg_stream: Generator[Message, Any, None] |
| 1110 | + assert isinstance(block.model, str) # block is a "concrete block" |
| 1111 | + assert isinstance(block.parameters, dict) # block is a "concrete block" |
1107 | 1112 | model_input_str = messages_to_str(block.model, model_input) |
1108 | 1113 | match block: |
1109 | 1114 | case BamModelBlock(): |
@@ -1158,6 +1163,8 @@ def generate_client_response_single( |
1158 | 1163 | block: BamModelBlock | LitellmModelBlock, |
1159 | 1164 | model_input: Messages, |
1160 | 1165 | ) -> Generator[YieldMessage, Any, Message]: |
| 1166 | + assert isinstance(block.model, str) # block is a "concrete block" |
| 1167 | + assert isinstance(block.parameters, dict) # block is a "concrete block" |
1161 | 1168 | msg: Message |
1162 | 1169 | model_input_str = messages_to_str(block.model, model_input) |
1163 | 1170 | match block: |
@@ -1189,6 +1196,8 @@ def generate_client_response_batching( # pylint: disable=too-many-arguments |
1189 | 1196 | # model: str, |
1190 | 1197 | model_input: Messages, |
1191 | 1198 | ) -> Generator[YieldMessage, Any, Message]: |
| 1199 | + assert isinstance(block.model, str) # block is a "concrete block" |
| 1200 | + assert isinstance(block.parameters, dict) # block is a "concrete block" |
1192 | 1201 | model_input_str = messages_to_str(block.model, model_input) |
1193 | 1202 | match block: |
1194 | 1203 | case BamModelBlock(): |
|
0 commit comments