|
1 | | -from typing import Dict, List, Optional, Union |
| 1 | +from typing import Any, Dict, List, Optional, Union |
2 | 2 |
|
3 | 3 | import json |
4 | 4 | import logging |
@@ -210,16 +210,25 @@ def invoke_evaluation( |
210 | 210 | evaluation_id: str, |
211 | 211 | input: Optional[str] = None, |
212 | 212 | output: Optional[str] = None, |
213 | | - messages: Optional[List[LLMMessage]] = None, |
| 213 | + messages: Union[ |
| 214 | + Optional[List[LLMMessage]], |
| 215 | + Optional[List[Dict[str, Any]]], |
| 216 | + ] = None, |
214 | 217 | available_tools: Optional[List[LLMToolDefinition]] = None, |
215 | 218 | ) -> EvaluationResponse: |
216 | 219 | url = f"{self._base_url}/api/evaluation/invoke/" |
217 | 220 |
|
| 221 | + if messages is not None: |
| 222 | + if isinstance(messages, list) and all( |
| 223 | + isinstance(message, dict) for message in messages |
| 224 | + ): |
| 225 | + messages = [LLMMessage(**message) for message in messages] # type: ignore # noqa E501 |
| 226 | + |
218 | 227 | request = EvaluationInvokeRequest( |
219 | 228 | evaluation_id=evaluation_id, |
220 | 229 | input=input, |
221 | 230 | output=output, |
222 | | - messages=messages, |
| 231 | + messages=messages, # type: ignore |
223 | 232 | available_tools=available_tools, |
224 | 233 | ) |
225 | 234 |
|
|
0 commit comments