Skip to content

Commit d8bd3fd

Browse files
committed
Think token flow filtering improved
1 parent 45445c1 commit d8bd3fd

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

openai-core/src/main/scala/io/cequence/openaiscala/service/adapter/MessageConversions.scala

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,26 @@ object MessageConversions {
5353

5454
def filterOutToThinkEndFlow: Flow[Seq[ChunkMessageSpec], Seq[ChunkMessageSpec], NotUsed] = {
5555
Flow[Seq[ChunkMessageSpec]].statefulMapConcat { () =>
56-
var foundEnd = false
56+
var startOutput: Option[Boolean] = None
5757

5858
(messages: Seq[ChunkMessageSpec]) => {
59-
if (foundEnd) {
60-
List(messages)
59+
if (startOutput.isDefined) {
60+
val nonEmptyLineFound = messages.exists(_.content.exists(_.trim.nonEmpty))
61+
62+
if (nonEmptyLineFound)
63+
startOutput = Some(true)
64+
65+
if (startOutput.get)
66+
List(messages)
67+
else
68+
List(messages.map(_.copy(content = None)))
6169
} else {
6270
val endFoundInThisChunk =
6371
messages.exists(_.content.exists(_.trim.matches(thinkEndTagRegex)))
6472

65-
if (endFoundInThisChunk) {
66-
foundEnd = true
67-
}
73+
if (endFoundInThisChunk)
74+
startOutput = Some(false)
75+
6876
List(messages.map(_.copy(content = None)))
6977
}
7078
}

0 commit comments

Comments
 (0)