Skip to content

Commit

Permalink
change tool name
Browse files Browse the repository at this point in the history
draft

draft

udpate
  • Loading branch information
jiazengcindy committed Oct 26, 2023
1 parent e1b9578 commit c9b792f
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 67 deletions.
64 changes: 64 additions & 0 deletions docs/how-to-guides/develop-a-tool/create-custom-llm-tool.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Create Custom LLM Tool
In this document, we will guide you through the process of developing a tool with `custom_llm` type which can connect to a customized large language model with prompt.

Custom LLM is a fine-tuned large language model by yourself. If you find it has good performance and is useful, then you can follow this guidance to make it a tool so that it can be shared with other people to have more impact.

## Prerequisites
- Please ensure that your `Prompt flow` for VS Code is updated to version 1.2.0 or later.

## How to create a custom LLM tool
Here we use [an existing tool package](../../../examples/tools/tool-package-quickstart/my_tool_package) as an example. If you want to create your own tool, please refer to [create and use tool package](create-and-use-tool-package.md).

### Add a `PromptTemplate` input for your tool, like in [this example](../../../examples/tools/tool-package-quickstart/my_tool_package/tools/tool_with_custom_llm_type.py)

```python
from jinja2 import Template
from promptflow import tool
from promptflow.connections import CustomConnection
# 1. Import the PromptTemplate type.
from promptflow.contracts.types import PromptTemplate


# 2. Add a PromptTemplate input for your tool method.
@tool
def my_tool(connection: CustomConnection, prompt: PromptTemplate, **kwargs) -> str:
# 3. The prompt is used for your custom LLM to do inference, customise your own code to handle and use the prompt here.
message = Template(prompt, trim_blocks=True, keep_trailing_newline=True).render(**kwargs)
return message
```

### Generate custom LLM tool YAML

Run the command below in your tool project directory to automatically generate your tool YAML, use _-t "custom_llm"_ or _--tool-type "custom_llm"_ to indicate this is a custom LLM tool:
```
python <path-to-scripts>\tool\generate_package_tool_meta.py -m <tool_module> -o <tool_yaml_path> -t "custom_llm"
```
Here we use [an existing tool](../../../examples/tools/tool-package-quickstart/my_tool_package/yamls/tool_with_custom_llm_type.yaml) as an example.
```
cd D:\proj\github\promptflow\examples\tools\tool-package-quickstart
python D:\proj\github\promptflow\scripts\tool\generate_package_tool_meta.py -m my_tool_package.tools.tool_with_custom_llm_type -o my_tool_package\yamls\tool_with_custom_llm_type.yaml -n "Custom LLM Tool" -d "This is a tool to demonstrate the custom_llm tool type" -t "custom_llm"
```
This command will generate YAML as follows:

```yaml
my_tool_package.tools.tool_with_custom_llm_type.my_tool:
name: Custom LLM Tool
description: This is a tool to demonstrate the custom_llm tool type
# The type is custom_llm.
type: custom_llm
module: my_tool_package.tools.tool_with_custom_llm_type
function: my_tool
inputs:
connection:
type:
- CustomConnection
```
## Use custom LLM tool in VS Code extension
Follow the steps to [build and install your tool package](create-and-use-tool-package.md#build-and-share-the-tool-package) and [use your tool from VS Code extension](create-and-use-tool-package.md#use-your-tool-from-vscode-extension).
Here we use an existing flow to demonstrate the experience, open [this flow](../../../examples/flows/standard/custom_llm_tool_showcase/flow.dag.yaml) in VS Code extension.
- There is a node named "custom_llm_tool" with a prompt template file. You have the option to either use an existing file or create a new one as the prompt template file.
![use_custom_llm_tool](../../media/how-to-guides/develop-a-tool/use_custom_llm_tool.png)
2 changes: 1 addition & 1 deletion docs/how-to-guides/develop-a-tool/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ We provide guides on how to develop a tool and use it.
create-and-use-tool-package
add-a-tool-icon
add-category-and-tags-for-tool
use-custom-llm-tool
create-custom-llm-tool
```
52 changes: 0 additions & 52 deletions docs/how-to-guides/develop-a-tool/use-custom-llm-tool.md

This file was deleted.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ def my_tool(connection: CustomConnection, prompt: PromptTemplate, **kwargs) -> s
# Usually connection contains configs to connect to an API.
# Not all tools need a connection. You can remove it if you don't need it.
message = Template(prompt, trim_blocks=True, keep_trailing_newline=True).render(**kwargs)
return message
return message

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
my_tool_package.tools.tool_with_custom_llm_type.my_tool:
description: This is a tool to demonstrate the custom_llm tool type
function: my_tool
inputs:
connection:
type:
- CustomConnection
module: my_tool_package.tools.tool_with_custom_llm_type
name: Custom LLM Tool
type: custom_llm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import unittest

from promptflow.connections import CustomConnection
from my_tool_package.tools.custom_llm_tool_showcase import my_tool
from my_tool_package.tools.tool_with_custom_llm_type import my_tool


@pytest.fixture
Expand All @@ -17,8 +17,8 @@ def my_custom_connection() -> CustomConnection:
return my_custom_connection


class TestToolWithPromptTemplateInput:
def test_custom_llm_tool_showcase(self, my_custom_connection):
class TestToolWithCustomLLMType:
def test_tool_with_custom_llm_type(self, my_custom_connection):
result = my_tool(my_custom_connection, "Hello {{text}}", text="Microsoft")
assert result == "Hello Microsoft"

Expand Down

0 comments on commit c9b792f

Please sign in to comment.