Pass system message to inferenceCliente.chatComplete (#211263)

Closes #211257 

## Summary

Regression introduced in 8.18
(https://github.com/elastic/kibana/pull/199286)

We no longer pass the `system` message to the inference plugin, and
thereby the LLM. This means that we are only passing user messages to
the LLM. The system message is important in steering the conversation,
and providing guardrails to the LLM.
This commit is contained in:
Arturo Lidueña 2025-02-16 09:43:50 +01:00 committed by GitHub
parent 11cd98bfc1
commit 117802cbb2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 5 additions and 0 deletions

View file

@ -346,6 +346,7 @@ describe('Observability AI Assistant client', () => {
{ {
connectorId: 'foo', connectorId: 'foo',
stream: true, stream: true,
system: EXPECTED_STORED_SYSTEM_MESSAGE,
messages: expect.arrayContaining([ messages: expect.arrayContaining([
{ role: 'user', content: 'How many alerts do I have?' }, { role: 'user', content: 'How many alerts do I have?' },
]), ]),
@ -916,6 +917,7 @@ describe('Observability AI Assistant client', () => {
{ {
connectorId: 'foo', connectorId: 'foo',
stream: true, stream: true,
system: EXPECTED_STORED_SYSTEM_MESSAGE,
messages: expect.arrayContaining([ messages: expect.arrayContaining([
{ role: 'user', content: 'How many alerts do I have?' }, { role: 'user', content: 'How many alerts do I have?' },
]), ]),
@ -1077,6 +1079,7 @@ describe('Observability AI Assistant client', () => {
{ {
connectorId: 'foo', connectorId: 'foo',
stream: true, stream: true,
system: EXPECTED_STORED_SYSTEM_MESSAGE,
messages: expect.arrayContaining([ messages: expect.arrayContaining([
{ role: 'user', content: 'How many alerts do I have?' }, { role: 'user', content: 'How many alerts do I have?' },
]), ]),

View file

@ -508,6 +508,8 @@ export class ObservabilityAIAssistantClient {
const options = { const options = {
connectorId, connectorId,
system: messages.find((message) => message.message.role === MessageRole.System)?.message
.content,
messages: convertMessagesForInference( messages: convertMessagesForInference(
messages.filter((message) => message.message.role !== MessageRole.System) messages.filter((message) => message.message.role !== MessageRole.System)
), ),