Files
dify-docs/plugin_dev_ja/0411-tool.ja.mdx
2025-05-16 22:15:00 +08:00

145 lines
6.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
dimensions:
type:
primary: reference
detail: core
level: beginner
standard_title: Tool
language: ja
title: ツールの返り値
description: このドキュメントでは、Difyプラグインにおけるツールのデータ構造と使用方法について詳しく説明します。内容には、さまざまなタイプのメッセージ画像URL、リンク、テキスト、ファイル、JSONを返す方法、変数およびストリーミング変数メッセージを作成する方法、そしてworkflowで参照しやすくするためにツールの出力変数スキーマを定義する方法が含まれます。
---
詳細なインターフェースドキュメントを読む前に、Difyプラグインのツール統合プロセスについて、大まかな理解があることを確認してください。
### データ構造
#### メッセージの返却
Difyは、`テキスト`、`リンク`、`画像`、`ファイルBLOB`、`JSON`など、さまざまなメッセージタイプをサポートしており、以下の異なるインターフェースを通じてさまざまなタイプのメッセージを返すことができます。
デフォルトでは、`workflow`内のツールの出力には、`files`、`text`、`json`の3つの固定変数が含まれ、以下の方法でこれらの変数のデータを返すことができます。
例えば、`create_image_message`を使用して画像を返しますが、ツールはカスタム出力変数もサポートしているため、`workflow`内でこれらの変数をより便利に参照できます。
#### **画像URL**
画像のURLを渡すだけで、Difyはリンクを通じて自動的に画像をダウンロードし、ユーザーに返します。
```python
def create_image_message(self, image: str) -> ToolInvokeMessage:
pass
```
#### **リンク**
リンクを返す必要がある場合は、以下のインターフェースを使用してください。
```python
def create_link_message(self, link: str) -> ToolInvokeMessage:
pass
```
#### **テキスト**
テキストメッセージを返す必要がある場合は、以下のインターフェースを使用してください。
```python
def create_text_message(self, text: str) -> ToolInvokeMessage:
pass
```
**ファイル**
画像、音声、動画、PPT、Word、Excelなどのファイルの生データを返す必要がある場合は、以下のインターフェースを使用できます。
* `blob` ファイルの生データ、bytes型。
* `meta` ファイルのメタデータ。開発者が明確なファイルタイプを必要とする場合は、`mime_type`を指定してください。そうでない場合、Difyはデフォルトタイプとして`octet/stream`を使用します。
```python
def create_blob_message(self, blob: bytes, meta: dict = None) -> ToolInvokeMessage:
pass
```
#### **JSON**
フォーマットされたJSONを返す必要がある場合は、以下のインターフェースを使用できます。これは通常、workflow内のード間のデータ転送に使用されます。agentモードでは、ほとんどの大規模モデルもJSONを読み取り、理解することができます。
* `object` Pythonの辞書オブジェクトで、自動的にJSONにシリアライズされます。
```python
def create_json_message(self, json: dict) -> ToolInvokeMessage:
pass
```
#### **変数**
非ストリーミング出力の変数の場合、以下のインターフェースを使用して返すことができます。複数作成した場合、後者が前者を上書きします。
```python
def create_variable_message(self, variable_name: str, variable_value: Any) -> ToolInvokeMessage:
pass
```
#### **ストリーミング変数**
「タイプライター」効果でテキストを出力したい場合は、ストリーミング変数を使用してテキストを出力できます。`chatflow`アプリケーションで`answer`ノードを使用し、この変数を参照すると、テキストは「タイプライター」効果で出力されます。ただし、現在この方法は文字列型のデータのみをサポートしています。
```python
def create_stream_variable_message(
self, variable_name: str, variable_value: str
) -> ToolInvokeMessage:
```
#### カスタム変数の返却
`workflow`アプリケーションで`tool`の出力変数を参照したい場合は、出力される可能性のある変数を事前に定義する必要があります。Difyプラグインは、[`json_schema`](https://json-schema.org/)形式の出力変数定義をサポートしています。以下に簡単な例を示します。
```yaml
identity:
author: author
name: tool
label:
en_US: label
zh_Hans: 标签
ja_JP: レベル
pt_BR: etiqueta
description:
human:
en_US: description
zh_Hans: 描述
ja_JP: 説明
pt_BR: descrição
llm: description
output_schema:
type: object
properties:
name:
type: string
```
上記のサンプルコードは、簡単なツールを定義し、それに`output_schema`を指定しています。これには`name`フィールドが含まれており、この時点で`workflow`内でこのフィールドを参照できます。ただし、実際に使用するためには、ツールの実装コードで変数を返す必要があることに注意してください。そうしないと、`None`の戻り結果が得られます。
{/*
Contributing Section
DO NOT edit this section!
It will be automatically generated by the script.
*/}
<CardGroup cols="2">
<Card
title="このページを編集する"
icon="pen-to-square"
href="https://github.com/langgenius/dify-docs-mintlify/edit/main/plugin_dev_ja/0411-tool.ja.mdx"
>
直接貢献することでドキュメントの改善にご協力ください
</Card>
<Card
title="問題を報告する"
icon="github"
href="https://github.com/langgenius/dify-docs-mintlify/issues/new?title=ドキュメントの問題%3A%20tool&body=%23%23%20問題の説明%0A%3C%21--%20発見した問題について簡単に説明してください%20--%3E%0A%0A%23%23%20ページリンク%0Ahttps%3A%2F%2Fgithub.com%2Flanggenius%2Fdify-docs-mintlify%2Fblob%2Fmain%2Fplugin_dev_ja%2F0411-tool.ja.mdx%0A%0A%23%23%20提案される変更%0A%3C%21--%20特定の変更案がある場合は、ここで説明してください%20--%3E%0A%0A%3C%21--%20ドキュメントの品質向上にご協力いただきありがとうございます%20--%3E"
>
エラーを見つけたり提案がありますか?お知らせください
</Card>
</CardGroup>