Add the option to ignore structured output method to LLM graph transf… (#26013)

Open source models like Llama3.1 have function calling, but it's not
that great. Therefore, we introduce the option to ignore model's
function calling and just use the prompt-based approach
This commit is contained in:
Tomaz Bratanic 2024-09-04 22:15:43 +09:00 committed by GitHub
parent 34fc00aff1
commit c649b449d7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -650,6 +650,10 @@ class LLMGraphTransformer:
any relationship properties from text. Alternatively, a list of valid
properties can be provided for the LLM to extract, restricting extraction to
those specified.
ignore_tool_usage (bool): Indicates whether the transformer should
bypass the use of structured output functionality of the language model.
If set to True, the transformer will not use the language model's native
function calling capabilities to handle structured output. Defaults to False.
Example:
.. code-block:: python
@ -675,16 +679,18 @@ class LLMGraphTransformer:
strict_mode: bool = True,
node_properties: Union[bool, List[str]] = False,
relationship_properties: Union[bool, List[str]] = False,
ignore_tool_usage: bool = False,
) -> None:
self.allowed_nodes = allowed_nodes
self.allowed_relationships = allowed_relationships
self.strict_mode = strict_mode
self._function_call = True
self._function_call = not ignore_tool_usage
# Check if the LLM really supports structured output
try:
llm.with_structured_output(_Graph)
except NotImplementedError:
self._function_call = False
if self._function_call:
try:
llm.with_structured_output(_Graph)
except NotImplementedError:
self._function_call = False
if not self._function_call:
if node_properties or relationship_properties:
raise ValueError(