mirror of
https://github.com/coalaura/whiskr.git
synced 2025-12-02 20:22:52 +00:00
fix image + file breaking message
This commit is contained in:
39
chat.go
39
chat.go
@@ -218,10 +218,20 @@ func (r *Request) Parse() (*openrouter.ChatCompletionRequest, error) {
|
||||
},
|
||||
})
|
||||
case "user":
|
||||
var content openrouter.Content
|
||||
var (
|
||||
content openrouter.Content
|
||||
multi bool
|
||||
last = -1
|
||||
)
|
||||
|
||||
if model.Vision && strings.Contains(message.Text, "![") {
|
||||
content.Multi = SplitImagePairs(message.Text)
|
||||
|
||||
multi = true
|
||||
|
||||
if content.Multi[len(content.Multi)-1].Type == openrouter.ChatMessagePartTypeText {
|
||||
last = len(content.Multi) - 1
|
||||
}
|
||||
} else {
|
||||
content.Text = message.Text
|
||||
}
|
||||
@@ -236,16 +246,33 @@ func (r *Request) Parse() (*openrouter.ChatCompletionRequest, error) {
|
||||
|
||||
lines := strings.Count(file.Content, "\n") + 1
|
||||
|
||||
if content.Text != "" {
|
||||
content.Text += "\n\n"
|
||||
}
|
||||
|
||||
content.Text += fmt.Sprintf(
|
||||
entry := fmt.Sprintf(
|
||||
"FILE %q LINES %d\n<<CONTENT>>\n%s\n<<END>>",
|
||||
file.Name,
|
||||
lines,
|
||||
file.Content,
|
||||
)
|
||||
|
||||
if multi {
|
||||
if last != -1 {
|
||||
if content.Multi[last].Text != "" {
|
||||
content.Multi[last].Text += "\n\n"
|
||||
}
|
||||
|
||||
content.Multi[last].Text += entry
|
||||
} else {
|
||||
content.Multi = append(content.Multi, openrouter.ChatMessagePart{
|
||||
Type: openrouter.ChatMessagePartTypeText,
|
||||
Text: entry,
|
||||
})
|
||||
}
|
||||
} else {
|
||||
if content.Text != "" {
|
||||
content.Text += "\n\n"
|
||||
}
|
||||
|
||||
content.Text += entry
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -63,10 +63,6 @@ func SplitImagePairs(text string) []openrouter.ChatMessagePart {
|
||||
|
||||
rest := text[str:end]
|
||||
|
||||
if rest == "" {
|
||||
return
|
||||
}
|
||||
|
||||
total := len(parts)
|
||||
|
||||
if total > 0 && parts[total-1].Type == openrouter.ChatMessagePartTypeText {
|
||||
@@ -75,6 +71,10 @@ func SplitImagePairs(text string) []openrouter.ChatMessagePart {
|
||||
return
|
||||
}
|
||||
|
||||
if strings.TrimSpace(rest) == "" {
|
||||
return
|
||||
}
|
||||
|
||||
parts = append(parts, openrouter.ChatMessagePart{
|
||||
Type: openrouter.ChatMessagePartTypeText,
|
||||
Text: rest,
|
||||
|
||||
Reference in New Issue
Block a user