@ -9,6 +9,7 @@ from unittest.mock import MagicMock, patch
import pytest
from core . app . entities . app_invoke_entities import InvokeFrom
from core . llm_generator . output_parser . structured_output import _parse_structured_output
from core . model_runtime . entities . llm_entities import LLMResult , LLMUsage
from core . model_runtime . entities . message_entities import AssistantPromptMessage
from core . workflow . entities . variable_pool import VariablePool
@ -277,29 +278,6 @@ def test_execute_llm_with_jinja2(flask_req_ctx, setup_code_executor_mock):
def test_extract_json ( ) :
node = init_llm_node (
config = {
" id " : " llm " ,
" data " : {
" title " : " 123 " ,
" type " : " llm " ,
" model " : { " provider " : " openai " , " name " : " gpt-3.5-turbo " , " mode " : " chat " , " completion_params " : { } } ,
" prompt_config " : {
" structured_output " : {
" enabled " : True ,
" schema " : {
" type " : " object " ,
" properties " : { " name " : { " type " : " string " } , " age " : { " type " : " number " } } ,
} ,
}
} ,
" prompt_template " : [ { " role " : " user " , " text " : " {{ #sys.query#}} " } ] ,
" memory " : None ,
" context " : { " enabled " : False } ,
" vision " : { " enabled " : False } ,
} ,
} ,
)
llm_texts = [
' <think> \n \n </think> { " name " : " test " , " age " : 123 ' , # resoning model (deepseek-r1)
' { " name " : " test " , " age " :123} ' , # json schema model (gpt-4o)
@ -308,4 +286,4 @@ def test_extract_json():
' { " name " : " test " ,age:123} ' , # without quotes (qwen-2.5-0.5b)
]
result = { " name " : " test " , " age " : 123 }
assert all ( node. _parse_structured_output( item ) == result for item in llm_texts )
assert all ( _parse_structured_output( item ) == result for item in llm_texts )