@@ -87,9 +87,11 @@ public struct OpenAILanguageModel: LanguageModel {
8787 fatalError ( " OpenAILanguageModel only supports generating String content " )
8888 }
8989
90- let messages = [
91- OpenAIMessage ( role: . user, content: . text( prompt. description) )
92- ]
90+ var messages : [ OpenAIMessage ] = [ ]
91+ if let instructions = session. instructions {
92+ messages. append ( OpenAIMessage ( role: . system, content: . text( instructions. description) ) )
93+ }
94+ messages. append ( OpenAIMessage ( role: . user, content: . text( prompt. description) ) )
9395
9496 // Convert tools if any are available in the session
9597 let openAITools : [ OpenAITool ] ? = {
@@ -231,9 +233,11 @@ public struct OpenAILanguageModel: LanguageModel {
231233 fatalError ( " OpenAILanguageModel only supports generating String content " )
232234 }
233235
234- let messages = [
235- OpenAIMessage ( role: . user, content: . text( prompt. description) )
236- ]
236+ var messages : [ OpenAIMessage ] = [ ]
237+ if let instructions = session. instructions {
238+ messages. append ( OpenAIMessage ( role: . system, content: . text( instructions. description) ) )
239+ }
240+ messages. append ( OpenAIMessage ( role: . user, content: . text( prompt. description) ) )
237241
238242 // Convert tools if any are available in the session
239243 let openAITools : [ OpenAITool ] ? = {
@@ -435,7 +439,8 @@ private enum Responses {
435439 options: GenerationOptions ,
436440 stream: Bool
437441 ) -> JSONValue {
438- // Extract the user message content for the input parameter
442+ // Extract the system and user message content for the request
443+ let systemMessage = messages. first { $0. role == . system }
439444 let userMessage = messages. first { $0. role == . user }
440445 let inputText = if case . text( let text) = userMessage? . content { text } else { " " }
441446
@@ -445,6 +450,10 @@ private enum Responses {
445450 " stream " : . bool( stream) ,
446451 ]
447452
453+ if case . text( let instructions) = systemMessage? . content {
454+ body [ " instructions " ] = . string( instructions)
455+ }
456+
448457 if let tools {
449458 body [ " tools " ] = . array( tools. map { $0. jsonValue ( for: . responses) } )
450459 }
0 commit comments