[Security assistant] Fix Bedrock Langgraph ESQL tool calling (#189810)

## Summary

Addresses the Bedrock portion of https://github.com/elastic/kibana/issues/189771.

When using the Bedrock connector and asking the AI Assistant ES|QL generation questions, the AI Assistant is now consistently using the `ESQLKnowledgeBaseTool` and responding with correct ES|QL syntax. This is an example of a [successful trace](34f01a8b-e9a5-4df6-8cc2-163960220718?timeModel=%7B%22duration%22%3A%227d%22%7D&peek=9b7d5f31-c98b-4f63-bb9b-b2df95863218).

![ma](https://github.com/user-attachments/assets/1e173e00-8c9e-4a40-ac2e-a2ee36ae57fa)
This commit is contained in:
Patryk Kopyciński 2024-08-03 01:47:27 +02:00 committed by GitHub
parent d0c644d83f
commit 83490a0a3e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 2 additions and 2 deletions

View file

@ -93,7 +93,7 @@ export const callAssistantGraph: AgentExecutor<true | false> = async ({
const modelExists = await esStore.isModelInstalled();
// Create a chain that uses the ELSER backed ElasticsearchStore, override k=10 for esql query generation for now
const chain = RetrievalQAChain.fromLLM(llm, esStore.asRetriever(10));
const chain = RetrievalQAChain.fromLLM(getLlmInstance(), esStore.asRetriever(10));
// Check if KB is available
const isEnabledKnowledgeBase = (await dataClients?.kbDataClient?.isModelDeployed()) ?? false;

View file

@ -28,7 +28,7 @@ export const geminiToolCallingAgentPrompt = ChatPromptTemplate.fromMessages([
[
'system',
'You are a helpful assistant. ALWAYS use the provided tools. Use tools as often as possible, as they have access to the latest data and syntax.\n\n' +
`The final response will be the only output the user sees and should be a complete answer to the user's question, as if you were responding to the user's initial question, which is "{input}". The final response should never be empty.`,
"The final response will be the only output the user sees and should be a complete answer to the user's question, as if you were responding to the user's initial question. The final response should never be empty.",
],
['placeholder', '{chat_history}'],
['human', '{input}'],