Skip to main content

A package for interacting with the Dify Service-API

Project description

Dify-OAPI

PyPI version Python 3.10+ License: MIT

A modern Python SDK for interacting with the Dify Service-API. This library provides a fluent, type-safe interface for building AI-powered applications using Dify's comprehensive API services including chat, completion, knowledge base, workflow, and chatflow features.

This project is based on https://github.com/QiMington/dify-oapi, completely refactored with modern Python practices and full support for the latest Dify API.

โœจ Features

  • Complete API Coverage: Chat (18 APIs), Chatflow (15 APIs), Completion (10 APIs), Knowledge Base (33 APIs), Workflow (4 APIs), and Core Dify (9 APIs)
  • Builder Pattern: Fluent, chainable interface for constructing requests
  • Sync & Async Support: Both synchronous and asynchronous operations
  • Streaming Responses: Real-time streaming for chat and completion
  • Type Safety: Comprehensive type hints with Pydantic 2.x validation
  • File Upload: Support for images and documents
  • Modern HTTP Client: Built on httpx for reliable API communication
  • Connection Pool Optimization: Efficient TCP connection reuse to reduce resource overhead

๐Ÿ“ฆ Installation

pip install dify-oapi2

Requirements: Python 3.10+

Core Dependencies:

  • pydantic (^2) - Data validation and settings management with type safety
  • httpx (^0) - Modern async HTTP client

Development Dependencies:

  • ruff (^0) - Fast Python linter and formatter
  • mypy (^1) - Static type checking
  • pytest (^8) - Testing framework
  • pre-commit (^4) - Git hooks for code quality
  • commitizen (^4) - Semantic versioning and changelog generation
  • poetry - Dependency management and packaging

๐Ÿ› ๏ธ Technology Stack

  • Language: Python 3.10+
  • HTTP Client: httpx with connection pooling optimization
  • Type System: Pydantic 2.x with comprehensive type validation
  • Architecture: Builder pattern with fluent API design + Service layer pattern
  • Async Support: Full async/await support with AsyncGenerator streaming
  • Code Quality: Ruff (linting + formatting) + MyPy (type checking)
  • Testing: pytest with async support and comprehensive coverage
  • Packaging: Poetry with modern Python packaging standards
  • Total Coverage: 89 API methods across 6 services with complete examples

๐Ÿš€ Quick Start

Basic Usage

from dify_oapi.client import Client
from dify_oapi.core.model.request_option import RequestOption
from dify_oapi.api.chat.v1.model.chat_request import ChatRequest

# Initialize client with builder pattern
client = (
    Client.builder()
    .domain("https://api.dify.ai")
    .max_connections(100)
    .keepalive_expiry(30.0)
    .build()
)

# Create request options
req_option = RequestOption.builder().api_key("your-api-key").build()

# Use the chat API
response = client.chat.chat(
    request=ChatRequest.builder()
    .query("Hello, how are you?")
    .user("user-123")
    .build(),
    request_option=req_option
)

print(response.answer)

Comprehensive Examples

Ready to build AI-powered applications? Check out our comprehensive examples:

Each example includes complete, runnable code with detailed explanations.

๐Ÿ”ง API Services

Chat API (18 APIs)

Resources: annotation (6), chat (3), conversation (6), message (3)

  • Interactive Chat: Send messages with blocking/streaming responses
  • Conversation Management: Complete conversation lifecycle operations
  • Annotation System: Create, update, delete annotations with reply settings
  • Message Operations: Basic message handling and history retrieval
  • Streaming Support: Real-time streaming for chat responses
  • Type Safety: Comprehensive type hints with strict Literal types

Chatflow API (15 APIs)

Resources: annotation (6), chatflow (3), conversation (6)

  • Enhanced Chat: Advanced chat functionality with workflow events
  • Conversation Management: Complete conversation operations with variables
  • Annotation System: Full annotation management and reply configuration
  • Workflow Integration: Seamless integration with workflow events
  • Event Streaming: Real-time streaming with comprehensive event handling
  • Type Safety: Strict Literal types for all predefined values

Completion API (10 APIs)

Resources: annotation (6), completion (4)

  • Text Generation: Advanced text completion and generation
  • Message Processing: Send messages and control text generation
  • Annotation Management: Create, update, and manage annotations
  • Generation Control: Stop ongoing text generation processes
  • Streaming Support: Real-time text generation with streaming responses
  • Type Safety: Full type validation with Pydantic models

Knowledge Base API (33 APIs)

Resources: chunk (4), dataset (6), document (10), model (1), segment (5), tag (7)

  • Dataset Management: Complete dataset CRUD operations and content retrieval
  • Document Processing: File upload, text processing, and batch management
  • Content Organization: Fine-grained segmentation and chunk management
  • Tag System: Flexible tagging and categorization system
  • Model Integration: Embedding model information and configuration
  • Search & Retrieval: Advanced search with multiple retrieval strategies

Workflow API (4 APIs)

Resources: workflow (4)

  • Workflow Execution: Run workflows with blocking or streaming responses
  • Execution Control: Stop running workflows and monitor progress
  • Log Management: Retrieve detailed execution logs and run details
  • Parameter Support: Flexible workflow parameter configuration

Dify Core API (9 APIs)

Resources: audio (2), feedback (2), file (1), info (4)

  • Audio Processing: Speech-to-text and text-to-speech conversion
  • Feedback System: Submit and retrieve user feedback
  • File Management: Unified file upload and processing
  • Application Info: App configuration, parameters, and metadata access

๐Ÿ’ก Examples

Explore comprehensive examples in the examples directory:

Chat Examples

Note: File upload and feedback examples are available in Dify Core API as shared services.

Completion Examples

Knowledge Base Examples

Chatflow Examples

Dify Core Examples

Workflow Examples

For detailed examples and usage patterns, see the examples README.

๐Ÿ› ๏ธ Development

Prerequisites

  • Python 3.10+
  • Poetry (for dependency management)
  • Git (for version control)

Setup

# Clone repository
git clone https://github.com/nodite/dify-oapi2.git
cd dify-oapi2

# Setup development environment (installs dependencies and pre-commit hooks)
make dev-setup

Code Quality Tools

This project uses modern Python tooling for code quality:

  • Ruff: Fast Python linter and formatter (replaces Black + isort + flake8)
  • MyPy: Static type checking for type safety
  • Pre-commit: Git hooks for automated code quality checks
  • Poetry: Modern dependency management and packaging
# Format code
make format

# Lint code
make lint

# Fix linting issues
make fix

# Run all checks (lint + type check)
make check

# Install pre-commit hooks
make install-hooks

# Run pre-commit hooks manually
make pre-commit

Testing

# Set environment variables for integration tests
export DOMAIN="https://api.dify.ai"
export CHAT_KEY="your-chat-api-key"
export CHATFLOW_KEY="your-chatflow-api-key"
export COMPLETION_KEY="your-completion-api-key"
export DIFY_KEY="your-dify-api-key"
export WORKFLOW_KEY="your-workflow-api-key"
export KNOWLEDGE_KEY="your-knowledge-api-key"

# Run tests
make test

# Run tests with coverage
make test-cov

# Run specific test module
poetry run pytest tests/knowledge/ -v

Build & Publish

# Configure PyPI tokens (one-time setup)
poetry config http-basic.testpypi __token__ <your-testpypi-token>
poetry config http-basic.pypi __token__ <your-pypi-token>

# Build package
make build

# Publish to TestPyPI (for testing)
make publish-test

# Publish to PyPI (maintainers only)
make publish

Project Structure

dify-oapi2/
โ”œโ”€โ”€ dify_oapi/           # Main SDK package
โ”‚   โ”œโ”€โ”€ api/             # API service modules
โ”‚   โ”‚   โ”œโ”€โ”€ chat/        # Chat API (18 APIs)
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ v1/      # Version 1 implementation
โ”‚   โ”‚   โ”œโ”€โ”€ chatflow/    # Chatflow API (15 APIs)
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ v1/      # Version 1 implementation
โ”‚   โ”‚   โ”œโ”€โ”€ completion/  # Completion API (10 APIs)
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ v1/      # Version 1 implementation
โ”‚   โ”‚   โ”œโ”€โ”€ dify/        # Core Dify API (9 APIs)
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ v1/      # Version 1 implementation
โ”‚   โ”‚   โ”œโ”€โ”€ knowledge/   # Knowledge Base API (33 APIs)
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ v1/      # Version 1 implementation
โ”‚   โ”‚   โ””โ”€โ”€ workflow/    # Workflow API (6 APIs)
โ”‚   โ”‚       โ””โ”€โ”€ v1/      # Version 1 implementation
โ”‚   โ”œโ”€โ”€ core/            # Core functionality
โ”‚   โ”‚   โ”œโ”€โ”€ http/        # HTTP transport layer with connection pooling
โ”‚   โ”‚   โ”œโ”€โ”€ model/       # Base models and configurations
โ”‚   โ”‚   โ””โ”€โ”€ utils/       # Utility functions
โ”‚   โ””โ”€โ”€ client.py        # Main client interface with builder pattern
โ”œโ”€โ”€ docs/                # Comprehensive documentation
โ”œโ”€โ”€ examples/            # Complete usage examples for all APIs
โ”œโ”€โ”€ tests/               # Comprehensive test suite
โ”œโ”€โ”€ pyproject.toml       # Project configuration (Poetry + tools)
โ”œโ”€โ”€ Makefile            # Development automation
โ””โ”€โ”€ DEVELOPMENT.md      # Development guide

๐Ÿ“– Documentation

๐Ÿค Contributing

Contributions are welcome! Please follow our development workflow:

  1. Fork the repository
  2. Clone and checkout the main branch (git checkout main)
  3. Create a feature branch from main (git checkout -b feature/amazing-feature)
  4. Make your changes with comprehensive tests
  5. Ensure code quality passes (make check)
  6. Run the full test suite (make test)
  7. Commit your changes (git commit -m 'Add amazing feature')
  8. Push to the branch (git push origin feature/amazing-feature)
  9. Submit a pull request to the main branch

Branch Strategy

  • main - Main development branch, all development and PRs are based on this branch
  • feature/* - Feature branches, created from and merged back to main
  • bugfix/* - Bug fix branches, created from and merged back to main
  • hotfix/* - Urgent fixes, created from and merged back to main

See DEVELOPMENT.md for detailed development guidelines.

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ”— Links


Keywords: dify, ai, nlp, language-processing, python-sdk, async, type-safe, api-client

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dify_oapi2-1.1.1.tar.gz (92.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dify_oapi2-1.1.1-py3-none-any.whl (238.8 kB view details)

Uploaded Python 3

File details

Details for the file dify_oapi2-1.1.1.tar.gz.

File metadata

  • Download URL: dify_oapi2-1.1.1.tar.gz
  • Upload date:
  • Size: 92.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/6.11.0-1018-azure

File hashes

Hashes for dify_oapi2-1.1.1.tar.gz
Algorithm Hash digest
SHA256 7084243eab795ed28db4df6a516bcf43e68021db547e7225bc5fac7ecf21a7f0
MD5 30063add427cd7c4f35d0c5c88f1ff43
BLAKE2b-256 1cc5f9859210d14a1f08c5446b02624fd152ca3fa966077efcd9bfc292a975c7

See more details on using hashes here.

File details

Details for the file dify_oapi2-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: dify_oapi2-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 238.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/6.11.0-1018-azure

File hashes

Hashes for dify_oapi2-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 41f4392eca8083870bd0ffdb47a7585762c6d54e0600d0f6080b2580c1da205e
MD5 89af114b9391d2b7a1b3064ba5229ca5
BLAKE2b-256 8f39a4fab304d7fabe360cb50b77ce254b9af31850b47a964ab9db05e3c008bf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page