@@ -1112,6 +1112,22 @@ func (e *emptyModel) GenerateContent(ctx context.Context, req *model.Request) (<
11121112}
11131113func (e * emptyModel ) Info () model.Info { return model.Info {Name : "empty" } }
11141114
1115+ type emptyChoicesModel struct {}
1116+
1117+ func (e * emptyChoicesModel ) GenerateContent (
1118+ ctx context.Context ,
1119+ req * model.Request ,
1120+ ) (<- chan * model.Response , error ) {
1121+ ch := make (chan * model.Response , 1 )
1122+ ch <- & model.Response {}
1123+ close (ch )
1124+ return ch , nil
1125+ }
1126+
1127+ func (e * emptyChoicesModel ) Info () model.Info {
1128+ return model.Info {Name : "empty_choices" }
1129+ }
1130+
11151131func TestExecuteModelWithEvents_NoResponseError (t * testing.T ) {
11161132 tracer := oteltrace .NewNoopTracerProvider ().Tracer ("t" )
11171133 _ , span := tracer .Start (context .Background (), "s" )
@@ -1130,6 +1146,29 @@ func TestExecuteModelWithEvents_NoResponseError(t *testing.T) {
11301146 require .Error (t , err )
11311147}
11321148
1149+ func TestExecuteModelWithEvents_NoChoicesError (t * testing.T ) {
1150+ tracer := oteltrace .NewNoopTracerProvider ().Tracer ("t" )
1151+ _ , span := tracer .Start (context .Background (), "s" )
1152+ _ , err := executeModelWithEvents (context .Background (),
1153+ modelExecutionConfig {
1154+ ModelCallbacks : nil ,
1155+ LLMModel : & emptyChoicesModel {},
1156+ Request : & model.Request {
1157+ Messages : []model.Message {
1158+ model .NewUserMessage ("hi" ),
1159+ },
1160+ },
1161+ EventChan : make (chan * event.Event , 1 ),
1162+ InvocationID : "inv" ,
1163+ SessionID : "sid" ,
1164+ AppName : "app" ,
1165+ UserID : "user" ,
1166+ Span : span ,
1167+ NodeID : "n" ,
1168+ })
1169+ require .Error (t , err )
1170+ }
1171+
11331172func TestRunModel_BeforeModelCustomResponse (t * testing.T ) {
11341173 // Callbacks return custom response, dummy model should not be called
11351174 cbs := model .NewCallbacks ().RegisterBeforeModel (func (ctx context.Context , req * model.Request ) (* model.Response , error ) {
0 commit comments