fix(server): filter out attachment in pplx provider (#11986)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **Bug Fixes**
  - Improved handling of messages without attachments, ensuring a placeholder is shown when content is empty and attachments are omitted.
- **New Features**
  - Added the ability to selectively include or exclude attachments in message processing.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
darkskygit
2025-04-25 09:50:32 +00:00
parent 4887e1d612
commit dc7bbddce1
2 changed files with 27 additions and 20 deletions

View File

@@ -82,7 +82,7 @@ export class PerplexityProvider
try {
metrics.ai.counter('chat_text_calls').add(1, { model });
const [system, msgs] = await chatToGPTMessage(messages);
const [system, msgs] = await chatToGPTMessage(messages, false);
const modelInstance = this.#instance(model);
@@ -119,7 +119,7 @@ export class PerplexityProvider
try {
metrics.ai.counter('chat_text_stream_calls').add(1, { model });
const [system, msgs] = await chatToGPTMessage(messages);
const [system, msgs] = await chatToGPTMessage(messages, false);
const modelInstance = this.#instance(model);

View File

@@ -58,7 +58,9 @@ async function inferMimeType(url: string) {
}
export async function chatToGPTMessage(
messages: PromptMessage[]
messages: PromptMessage[],
// TODO(@darkskygit): move this logic in interface refactoring
withAttachment: boolean = true
): Promise<[string | undefined, ChatMessage[], any]> {
const system = messages[0]?.role === 'system' ? messages.shift() : undefined;
const schema = system?.params?.schema;
@@ -77,6 +79,7 @@ export async function chatToGPTMessage(
contents.push({ type: 'text', text: content });
}
if (withAttachment) {
for (let attachment of attachments) {
let mimeType: string;
if (typeof attachment === 'string') {
@@ -98,6 +101,10 @@ export async function chatToGPTMessage(
}
}
}
} else if (!content.length) {
// temp fix for pplx
contents.push({ type: 'text', text: '[no content]' });
}
msgs.push({ role, content: contents } as ChatMessage);
} else {