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":
|
case "user":
|
||||||
var content openrouter.Content
|
var (
|
||||||
|
content openrouter.Content
|
||||||
|
multi bool
|
||||||
|
last = -1
|
||||||
|
)
|
||||||
|
|
||||||
if model.Vision && strings.Contains(message.Text, "![") {
|
if model.Vision && strings.Contains(message.Text, "![") {
|
||||||
content.Multi = SplitImagePairs(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 {
|
} else {
|
||||||
content.Text = message.Text
|
content.Text = message.Text
|
||||||
}
|
}
|
||||||
@@ -236,16 +246,33 @@ func (r *Request) Parse() (*openrouter.ChatCompletionRequest, error) {
|
|||||||
|
|
||||||
lines := strings.Count(file.Content, "\n") + 1
|
lines := strings.Count(file.Content, "\n") + 1
|
||||||
|
|
||||||
if content.Text != "" {
|
entry := fmt.Sprintf(
|
||||||
content.Text += "\n\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
content.Text += fmt.Sprintf(
|
|
||||||
"FILE %q LINES %d\n<<CONTENT>>\n%s\n<<END>>",
|
"FILE %q LINES %d\n<<CONTENT>>\n%s\n<<END>>",
|
||||||
file.Name,
|
file.Name,
|
||||||
lines,
|
lines,
|
||||||
file.Content,
|
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]
|
rest := text[str:end]
|
||||||
|
|
||||||
if rest == "" {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
total := len(parts)
|
total := len(parts)
|
||||||
|
|
||||||
if total > 0 && parts[total-1].Type == openrouter.ChatMessagePartTypeText {
|
if total > 0 && parts[total-1].Type == openrouter.ChatMessagePartTypeText {
|
||||||
@@ -75,6 +71,10 @@ func SplitImagePairs(text string) []openrouter.ChatMessagePart {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if strings.TrimSpace(rest) == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
parts = append(parts, openrouter.ChatMessagePart{
|
parts = append(parts, openrouter.ChatMessagePart{
|
||||||
Type: openrouter.ChatMessagePartTypeText,
|
Type: openrouter.ChatMessagePartTypeText,
|
||||||
Text: rest,
|
Text: rest,
|
||||||
|
|||||||
Reference in New Issue
Block a user