Overview

genai_extract_function_results

You can use this function to monitor function call outcomes, debug tool integrations, analyze API usage patterns, or track the effectiveness of function calls in AI workflows.

Usage#

Syntax#

genai_extract_function_results(messages)

Parameters#

Name Type Required Description
messages dynamic Yes An array of message objects from a GenAI conversation. Each message typically contains role and content fields.

Returns#

Returns a dynamic object containing the function call results from the conversation, or null if no function results are found.

Example#

Extract function call results from a GenAI conversation to analyze tool execution outcomes.

Query

['otel-demo-genai']
| extend function_results = genai_extract_function_results(['attributes.gen_ai.input.messages'])
| where isnotnull(function_results)
| project _time, function_results
| limit 3

Run in Playground

Output

_time function_results
2024-01-15T10:30:00Z {"status": "success", "data": {"temperature": 72, "humidity": 45}}
2024-01-15T10:31:00Z {"status": "success", "data": {"balance": 1250.50}}

This query shows function call results, helping you understand tool execution performance and outcomes.

  • genai_extract_tool_calls: Extracts the tool call requests. Use this to see what functions were requested, while genai_extract_function_results shows the results.
  • genai_has_tool_calls: Checks if messages contain tool calls. Use this to filter conversations that use function calling.
  • genai_get_content_by_role: Gets content by specific role. Use this for more granular extraction when you need specific role messages.
  • genai_extract_assistant_response: Extracts assistant responses. Use this when you need the AI's text response instead of function results.

Other query languages#

Splunk SPL users

In Splunk SPL, you would need to use complex filtering and extraction logic to isolate function results from nested message structures.

Splunk example

| eval function_results=mvfilter(match(role, "function") OR match(role, "tool"))
| eval results=mvindex(function_results, 0)

APL equivalent

['ai-logs']
| extend results = genai_extract_function_results(messages)
ANSI SQL users

In ANSI SQL, you would need to unnest arrays and filter for function or tool roles, which is more complex.

SQL example

SELECT
  conversation_id,
  JSON_EXTRACT(content, '$.result') as function_results
FROM conversations
CROSS JOIN UNNEST(messages)
WHERE role IN ('function', 'tool')

APL equivalent

['ai-logs']
| extend function_results = genai_extract_function_results(messages)

Updated

Was this page helpful?