|
# dify-client |
|
|
|
A Dify App Service-API Client, using for build a webapp by request Service-API |
|
|
|
## Usage |
|
|
|
First, install `dify-client` python sdk package: |
|
|
|
``` |
|
pip install dify-client |
|
``` |
|
|
|
Write your code with sdk: |
|
|
|
- completion generate with `blocking` response_mode |
|
|
|
```python |
|
from dify_client import CompletionClient |
|
|
|
api_key = "your_api_key" |
|
|
|
# Initialize CompletionClient |
|
completion_client = CompletionClient(api_key) |
|
|
|
# Create Completion Message using CompletionClient |
|
completion_response = completion_client.create_completion_message(inputs={"query": "What's the weather like today?"}, |
|
response_mode="blocking", user="user_id") |
|
completion_response.raise_for_status() |
|
|
|
result = completion_response.json() |
|
|
|
print(result.get('answer')) |
|
``` |
|
|
|
- completion using vision model, like gpt-4-vision |
|
|
|
```python |
|
from dify_client import CompletionClient |
|
|
|
api_key = "your_api_key" |
|
|
|
# Initialize CompletionClient |
|
completion_client = CompletionClient(api_key) |
|
|
|
files = [{ |
|
"type": "image", |
|
"transfer_method": "remote_url", |
|
"url": "your_image_url" |
|
}] |
|
|
|
# files = [{ |
|
# "type": "image", |
|
# "transfer_method": "local_file", |
|
# "upload_file_id": "your_file_id" |
|
# }] |
|
|
|
# Create Completion Message using CompletionClient |
|
completion_response = completion_client.create_completion_message(inputs={"query": "Describe the picture."}, |
|
response_mode="blocking", user="user_id", files=files) |
|
completion_response.raise_for_status() |
|
|
|
result = completion_response.json() |
|
|
|
print(result.get('answer')) |
|
``` |
|
|
|
- chat generate with `streaming` response_mode |
|
|
|
```python |
|
import json |
|
from dify_client import ChatClient |
|
|
|
api_key = "your_api_key" |
|
|
|
# Initialize ChatClient |
|
chat_client = ChatClient(api_key) |
|
|
|
# Create Chat Message using ChatClient |
|
chat_response = chat_client.create_chat_message(inputs={}, query="Hello", user="user_id", response_mode="streaming") |
|
chat_response.raise_for_status() |
|
|
|
for line in chat_response.iter_lines(decode_unicode=True): |
|
line = line.split('data:', 1)[-1] |
|
if line.strip(): |
|
line = json.loads(line.strip()) |
|
print(line.get('answer')) |
|
``` |
|
|
|
- chat using vision model, like gpt-4-vision |
|
|
|
```python |
|
from dify_client import ChatClient |
|
|
|
api_key = "your_api_key" |
|
|
|
# Initialize ChatClient |
|
chat_client = ChatClient(api_key) |
|
|
|
files = [{ |
|
"type": "image", |
|
"transfer_method": "remote_url", |
|
"url": "your_image_url" |
|
}] |
|
|
|
# files = [{ |
|
# "type": "image", |
|
# "transfer_method": "local_file", |
|
# "upload_file_id": "your_file_id" |
|
# }] |
|
|
|
# Create Chat Message using ChatClient |
|
chat_response = chat_client.create_chat_message(inputs={}, query="Describe the picture.", user="user_id", |
|
response_mode="blocking", files=files) |
|
chat_response.raise_for_status() |
|
|
|
result = chat_response.json() |
|
|
|
print(result.get("answer")) |
|
``` |
|
|
|
- upload file when using vision model |
|
|
|
```python |
|
from dify_client import DifyClient |
|
|
|
api_key = "your_api_key" |
|
|
|
# Initialize Client |
|
dify_client = DifyClient(api_key) |
|
|
|
file_path = "your_image_file_path" |
|
file_name = "panda.jpeg" |
|
mime_type = "image/jpeg" |
|
|
|
with open(file_path, "rb") as file: |
|
files = { |
|
"file": (file_name, file, mime_type) |
|
} |
|
response = dify_client.file_upload("user_id", files) |
|
|
|
result = response.json() |
|
print(f'upload_file_id: {result.get("id")}') |
|
``` |
|
|
|
|
|
|
|
- Others |
|
|
|
```python |
|
from dify_client import ChatClient |
|
|
|
api_key = "your_api_key" |
|
|
|
# Initialize Client |
|
client = ChatClient(api_key) |
|
|
|
# Get App parameters |
|
parameters = client.get_application_parameters(user="user_id") |
|
parameters.raise_for_status() |
|
|
|
print('[parameters]') |
|
print(parameters.json()) |
|
|
|
# Get Conversation List (only for chat) |
|
conversations = client.get_conversations(user="user_id") |
|
conversations.raise_for_status() |
|
|
|
print('[conversations]') |
|
print(conversations.json()) |
|
|
|
# Get Message List (only for chat) |
|
messages = client.get_conversation_messages(user="user_id", conversation_id="conversation_id") |
|
messages.raise_for_status() |
|
|
|
print('[messages]') |
|
print(messages.json()) |
|
|
|
# Rename Conversation (only for chat) |
|
rename_conversation_response = client.rename_conversation(conversation_id="conversation_id", |
|
name="new_name", user="user_id") |
|
rename_conversation_response.raise_for_status() |
|
|
|
print('[rename result]') |
|
print(rename_conversation_response.json()) |
|
``` |
|
|