Files
strukto-ai--mirage/docs/python/setup/dify.mdx
T
wehub-resource-sync bcbd1bdb22
Integ / changes (push) Has been skipped
Pre-commit / pre-commit (push) Failing after 1s
CLI exit codes / changes (push) Has been skipped
Test (Install) / changes (push) Has been skipped
Test (Python) / changes (push) Has been skipped
Test (TypeScript) / changes (push) Has been skipped
CLI exit codes / cli-gate (push) Has been cancelled
Test (Install) / test-install-gate (push) Has been cancelled
Integ / integ-gate (push) Has been cancelled
Test (Python) / test-python-gate (push) Has been cancelled
Test (TypeScript) / test-typescript-gate (push) Has been cancelled
Test (Install) / python-minimal (3.12) (push) Has been cancelled
Test (Install) / python-minimal (3.11) (push) Has been cancelled
Test (Install) / python-extra (agno, mirage.agents.agno) (push) Has been cancelled
Test (Install) / python-extra (chroma, mirage.resource.chroma) (push) Has been cancelled
Test (Install) / python-extra (pdf, mirage.core.filetype.pdf) (push) Has been cancelled
Integ / integ (push) Has been cancelled
Integ / integ-database (push) Has been cancelled
Integ / integ-database-ts (push) Has been cancelled
Integ / integ-data (push) Has been cancelled
Integ / integ-ssh (push) Has been cancelled
Integ / integ-ssh-ts (push) Has been cancelled
Test (Python) / audit (push) Has been cancelled
Test (TypeScript) / test (push) Has been cancelled
Test (TypeScript) / python-fs-shim (push) Has been cancelled
CLI exit codes / Python CLI (push) Has been cancelled
CLI exit codes / TypeScript CLI (push) Has been cancelled
CLI exit codes / Cross-language snapshot interop (push) Has been cancelled
Test (Python) / test (push) Has been cancelled
Test (Python) / import-isolation (deepagents, openai, mirage.agents.openai_agents) (push) Has been cancelled
Test (Python) / import-isolation (deepagents, pydantic-ai, mirage.agents.pydantic_ai) (push) Has been cancelled
Integ / integ-ts (push) Has been cancelled
Integ / integ-fuse (push) Has been cancelled
Test (Install) / python-extra (databricks, mirage.resource.databricks_volume) (push) Has been cancelled
Test (Install) / python-extra (deepagents, mirage.agents.langchain) (push) Has been cancelled
Test (Install) / python-extra (email, mirage.resource.email) (push) Has been cancelled
Test (Install) / python-extra (fuse, mirage.fuse.mount) (push) Has been cancelled
Test (Install) / python-extra (hdf5, mirage.core.filetype.hdf5) (push) Has been cancelled
Test (Install) / python-extra (hf, mirage.resource.hf_buckets) (push) Has been cancelled
Test (Install) / python-extra (lancedb, mirage.resource.lancedb) (push) Has been cancelled
Test (Install) / python-extra (langfuse, mirage.resource.langfuse) (push) Has been cancelled
Test (Install) / python-extra (mongodb, mirage.resource.mongodb) (push) Has been cancelled
Test (Install) / python-extra (nextcloud, mirage.resource.nextcloud) (push) Has been cancelled
Test (Install) / python-extra (openai, mirage.agents.openai_agents) (push) Has been cancelled
Test (Install) / python-extra (openhands, mirage.agents.openhands, 3.12) (push) Has been cancelled
Test (Install) / python-extra (parquet, mirage.core.filetype.parquet) (push) Has been cancelled
Test (Install) / python-extra (postgres, mirage.resource.postgres) (push) Has been cancelled
Test (Install) / python-extra (pydantic-ai, mirage.agents.pydantic_ai) (push) Has been cancelled
Test (Install) / python-extra (qdrant, mirage.resource.qdrant) (push) Has been cancelled
Test (Install) / python-extra (redis, mirage.resource.redis) (push) Has been cancelled
Test (Install) / python-extra (s3, mirage.resource.s3) (push) Has been cancelled
Test (Install) / python-extra (ssh, mirage.resource.ssh) (push) Has been cancelled
Test (Install) / ts-minimal (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:30:44 +08:00

88 lines
2.4 KiB
Plaintext

---
title: Dify
icon: /images/dify-logo.svg
description: Set up the Dify Knowledge resource in Python.
---
## Dependencies
No additional dependencies are required beyond the Python package. The Dify
resource uses `httpx` for async API calls.
For credential setup, see the [Dify Setup](/home/setup/dify) guide.
## Configuration
```python
import os
from mirage import MountMode, Workspace
from mirage.resource.dify import DifyConfig, DifyResource
config = DifyConfig(
api_key=os.environ["DIFY_API_KEY"],
base_url=os.environ.get("DIFY_BASE_URL", "https://api.dify.ai/v1"),
dataset_id=os.environ["DIFY_DATASET_ID"],
slug_metadata_name=os.environ.get("DIFY_SLUG_METADATA_NAME", "slug"),
)
resource = DifyResource(config=config)
ws = Workspace({"/knowledge/": resource}, mode=MountMode.READ)
```
## Config Reference
| Field | Required | Default | Description |
| -------------------- | -------- | ------- | ----------- |
| `api_key` | Yes | | Dify Knowledge API key |
| `base_url` | Yes | | Dify API base URL |
| `dataset_id` | Yes | | Dify Knowledge dataset |
| `slug_metadata_name` | No | `slug` | Dify document metadata name used as the virtual path slug |
`DifyConfig` normalizes `base_url` by removing a trailing slash and trims
`slug_metadata_name`.
## Environment Example
```bash
# .env.development
DIFY_API_KEY=dataset-...
DIFY_BASE_URL=https://api.dify.ai/v1
DIFY_DATASET_ID=...
DIFY_SLUG_METADATA_NAME=slug
```
## Metadata Setup
For stable filesystem paths and scoped search, add a Dify document metadata
field named by `slug_metadata_name`. The default field name is `slug`.
```text
name: slug
value: guides/quickstart.md
```
If your Dify metadata field is named `path` instead, configure:
```python
config = DifyConfig(
api_key=os.environ["DIFY_API_KEY"],
base_url=os.environ.get("DIFY_BASE_URL", "https://api.dify.ai/v1"),
dataset_id=os.environ["DIFY_DATASET_ID"],
slug_metadata_name="path",
)
```
Mirage maps that document to:
```text
/knowledge/guides/quickstart.md
```
If a document does not have the configured slug metadata field, Mirage uses the
document name as the path. To make scoped `search` work for those name-based
documents, enable Dify's Built-in Fields in the dataset metadata settings so
`document_name` can be used as a metadata filter.
See [Dify Setup](/home/setup/dify#document-metadata) for the full metadata
checklist.