A package for interacting with the Dify Service-API
Project description
dify-client-python
dify-client-python is a typed Python SDK for Dify Runtime APIs, covering chat, completion, workflow, file upload, feedback, and audio conversion endpoints.
Requirements
- Python
>=3.8 - Dify Runtime API (cloud or self-hosted) compatible with
/v1endpoints
Installation
pip install dify-client-python
What Is Supported
- Sync and async clients:
Client,AsyncClient - Blocking and streaming response modes
- Chat and completion message APIs
- Workflow run/stream/stop APIs
- File upload APIs
- Message feedback and suggestion APIs
- Audio APIs:
audio-to-texttext-to-audio
- Updated stream event support for newer workflow/chatflow runtimes:
workflow_paused,iteration_*,loop_*,text_chunk,text_replacehuman_input_*,node_retry,agent_log,tts_message
Quick Start (Sync)
import uuid
from dify_client import Client, models
client = Client(
api_key="your-api-key",
api_base="https://api.dify.ai/v1",
)
user = str(uuid.uuid4())
req = models.ChatRequest(
query="Hello from dify-client-python",
inputs={},
user=user,
response_mode=models.ResponseMode.BLOCKING,
)
res = client.chat_messages(req, timeout=60.0)
print(res.answer)
Streaming Chat
stream_req = models.ChatRequest(
query="Stream this answer",
inputs={},
user=user,
response_mode=models.ResponseMode.STREAMING,
)
for event in client.chat_messages(stream_req, timeout=60.0):
print(event.event, getattr(event, "answer", None))
Audio APIs
audio_text = client.audio_to_text(
("sample.wav", open("sample.wav", "rb"), "audio/wav"),
models.AudioToTextRequest(user=user),
)
print(audio_text.text)
audio_bytes = client.text_to_audio(
models.TextToAudioRequest(text="Hello world", user=user)
)
with open("speech.mp3", "wb") as f:
f.write(audio_bytes)
Quick Start (Async)
import asyncio
from dify_client import AsyncClient, models
async_client = AsyncClient(api_key="your-api-key", api_base="https://api.dify.ai/v1")
async def main():
req = models.ChatRequest(
query="hello",
inputs={},
user="user-1",
response_mode=models.ResponseMode.STREAMING,
)
async for chunk in await async_client.achat_messages(req, timeout=60.0):
print(chunk.event)
asyncio.run(main())
Security Notes
- Do not hardcode production API keys in source code.
- Prefer environment variables or secret managers for
api_key. - The SDK injects
Authorization: Bearer ...headers, but does not log keys by default. - If you add your own logging middleware around requests, redact
Authorizationheaders.
Development
python -m pip install -e . pytest pytest-cov flake8 build twine setuptools wheel
python -m flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
python -m pytest -q --cov=dify_client --cov-report=term-missing
python -m build --no-isolation
python -m twine check --strict dist/*
Release
Use RELEASE.md for the release checklist and commands.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dify_client_python-1.0.3.tar.gz
(19.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dify_client_python-1.0.3.tar.gz.
File metadata
- Download URL: dify_client_python-1.0.3.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14c44e5cfd9a3dac202499de166ad1fedf533f4cd2fd68cb94ff187efe5e91e5
|
|
| MD5 |
65a184261ddae3d34307d4427db76d79
|
|
| BLAKE2b-256 |
e473cabaa9afe4c4fb60ba482081612cd54ed98f6b49d34921af3e75180ec9ce
|
File details
Details for the file dify_client_python-1.0.3-py3-none-any.whl.
File metadata
- Download URL: dify_client_python-1.0.3-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99168b121859ffbf19dd2203d06e0a0646a83ac2d28c6f2c77a076309fa64681
|
|
| MD5 |
0d840502077c000499841dafa69ffcac
|
|
| BLAKE2b-256 |
9af63683731ab73add636a4c841230cc50c7d16ff8ee0e2eb5ba262284a047a0
|