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
88 lines
2.4 KiB
Plaintext
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.
|