Originally created by @michaelpoluektov on GitHub (Jul 8, 2024).
Is your feature request related to a problem? Please describe.
Right now we're limited to either implement tool calling within a function/pipeline directly, or using the default function calling pipeline.
By re-implementing tool calling in a pipeline, we have to define all tools directly, which makes it harder for users to pull extra tools. Additionally, we can't select/de-select them from the UI.
By using native tool calling, we can't control when tools are called (for example, it's impossible to implement an OpenAI-like tool call in the middle of a message), and in the case of functions, we can't know when the pipe() function is called to generate tool call responses.
Describe the solution you'd like
For a function/pipeline, add an optional attribute called "prepend_tools" that decides if the tools are called and appended to the system prompt before responding.
Add an optional parameter to pipe(), called, say, __tool_signatures__ and __tool_callables__ (or simply __tools__: dict) with __tools__["signatures"] and __tools__["callables"] pointing to signatures (in OpenAI JSON format) and and callables respectively
Originally created by @michaelpoluektov on GitHub (Jul 8, 2024).
**Is your feature request related to a problem? Please describe.**
Right now we're limited to either implement tool calling within a function/pipeline directly, or using the default function calling pipeline.
- By re-implementing tool calling in a pipeline, we have to define all tools directly, which makes it harder for users to pull extra tools. Additionally, we can't select/de-select them from the UI.
- By using native tool calling, we can't control _when_ tools are called (for example, it's impossible to implement an OpenAI-like tool call in the middle of a message), and in the case of functions, we can't know when the pipe() function is called to generate tool call responses.
**Describe the solution you'd like**
For a function/pipeline, add an optional attribute called "prepend_tools" that decides if the tools are called and appended to the system prompt before responding.
Add an optional parameter to pipe(), called, say, `__tool_signatures__` and `__tool_callables__` (or simply `__tools__: dict`) with `__tools__["signatures"]` and `__tools__["callables"]` pointing to signatures (in OpenAI JSON format) and and callables respectively
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @michaelpoluektov on GitHub (Jul 8, 2024).
Is your feature request related to a problem? Please describe.
Right now we're limited to either implement tool calling within a function/pipeline directly, or using the default function calling pipeline.
Describe the solution you'd like
For a function/pipeline, add an optional attribute called "prepend_tools" that decides if the tools are called and appended to the system prompt before responding.
Add an optional parameter to pipe(), called, say,
__tool_signatures__and__tool_callables__(or simply__tools__: dict) with__tools__["signatures"]and__tools__["callables"]pointing to signatures (in OpenAI JSON format) and and callables respectively@michaelpoluektov commented on GitHub (Aug 19, 2024):
Draft implementation
https://github.com/open-webui/open-webui/pull/4724