mirror of
https://github.com/langgenius/dify-docs.git
synced 2026-03-27 13:28:32 +07:00
145 lines
6.7 KiB
Plaintext
145 lines
6.7 KiB
Plaintext
---
|
||
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>
|