Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

dify python sdk

License

NotificationsYou must be signed in to change notification settings

langgenius/dify-python-sdk

Repository files navigation

A Dify App Service-API Client, using for build a webapp by request Service-API

Usage

First, installdify-client python sdk package:

pip install dify-client

Synchronous Usage

Write your code with sdk:

  • completion generate withblocking response_mode
fromdify_clientimportCompletionClientapi_key="your_api_key"# Initialize CompletionClientcompletion_client=CompletionClient(api_key)# Create Completion Message using CompletionClientcompletion_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
fromdify_clientimportCompletionClientapi_key="your_api_key"# Initialize CompletionClientcompletion_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 CompletionClientcompletion_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 withstreaming response_mode
importjsonfromdify_clientimportChatClientapi_key="your_api_key"# Initialize ChatClientchat_client=ChatClient(api_key)# Create Chat Message using ChatClientchat_response=chat_client.create_chat_message(inputs={},query="Hello",user="user_id",response_mode="streaming")chat_response.raise_for_status()forlineinchat_response.iter_lines(decode_unicode=True):line=line.split('data:',1)[-1]ifline.strip():line=json.loads(line.strip())print(line.get('answer'))
  • chat using vision model, like gpt-4-vision
fromdify_clientimportChatClientapi_key="your_api_key"# Initialize ChatClientchat_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 ChatClientchat_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
fromdify_clientimportDifyClientapi_key="your_api_key"# Initialize Clientdify_client=DifyClient(api_key)file_path="your_image_file_path"file_name="panda.jpeg"mime_type="image/jpeg"withopen(file_path,"rb")asfile: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
fromdify_clientimportChatClientapi_key="your_api_key"# Initialize Clientclient=ChatClient(api_key)# Get App parametersparameters=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())
  • Using the Workflow Client
importjsonimportrequestsfromdify_clientimportWorkflowClientapi_key="your_api_key"# Initialize Workflow Clientclient=WorkflowClient(api_key)# Prepare parameters for Workflow Clientuser_id="your_user_id"context="previous user interaction / metadata"user_prompt="What is the capital of France?"inputs= {"context":context,"user_prompt":user_prompt,# Add other input fields expected by your workflow (e.g., additional context, task parameters)}# Set response mode (default: streaming)response_mode="blocking"# Run the workflowresponse=client.run(inputs=inputs,response_mode=response_mode,user=user_id)response.raise_for_status()# Parse resultresult=json.loads(response.text)answer=result.get("data").get("outputs")print(answer["answer"])
  • Dataset Management
fromdify_clientimportKnowledgeBaseClientapi_key="your_api_key"dataset_id="your_dataset_id"# Use context manager to ensure proper resource cleanupwithKnowledgeBaseClient(api_key,dataset_id)askb_client:# Get dataset informationdataset_info=kb_client.get_dataset()dataset_info.raise_for_status()print(dataset_info.json())# Update dataset configurationupdate_response=kb_client.update_dataset(name="Updated Dataset Name",description="Updated description",indexing_technique="high_quality"    )update_response.raise_for_status()print(update_response.json())# Batch update document statusbatch_response=kb_client.batch_update_document_status(action="enable",document_ids=["doc_id_1","doc_id_2","doc_id_3"]    )batch_response.raise_for_status()print(batch_response.json())
  • Conversation Variables Management
fromdify_clientimportChatClientapi_key="your_api_key"# Use context manager to ensure proper resource cleanupwithChatClient(api_key)aschat_client:# Get all conversation variablesvariables=chat_client.get_conversation_variables(conversation_id="conversation_id",user="user_id"    )variables.raise_for_status()print(variables.json())# Update a specific conversation variableupdate_var=chat_client.update_conversation_variable(conversation_id="conversation_id",variable_id="variable_id",value="new_value",user="user_id"    )update_var.raise_for_status()print(update_var.json())

Asynchronous Usage

The SDK provides full async/await support for all API operations usinghttpx.AsyncClient. All async clients mirror their synchronous counterparts but requireawait for method calls.

  • async chat withblocking response_mode
importasynciofromdify_clientimportAsyncChatClientapi_key="your_api_key"asyncdefmain():# Use async context manager for proper resource cleanupasyncwithAsyncChatClient(api_key)asclient:response=awaitclient.create_chat_message(inputs={},query="Hello, how are you?",user="user_id",response_mode="blocking"        )response.raise_for_status()result=response.json()print(result.get('answer'))# Run the async functionasyncio.run(main())
  • async completion withstreaming response_mode
importasyncioimportjsonfromdify_clientimportAsyncCompletionClientapi_key="your_api_key"asyncdefmain():asyncwithAsyncCompletionClient(api_key)asclient:response=awaitclient.create_completion_message(inputs={"query":"What's the weather?"},response_mode="streaming",user="user_id"        )response.raise_for_status()# Stream the responseasyncforlineinresponse.aiter_lines():ifline.startswith('data:'):data=line[5:].strip()ifdata:chunk=json.loads(data)print(chunk.get('answer',''),end='',flush=True)asyncio.run(main())
  • async workflow execution
importasynciofromdify_clientimportAsyncWorkflowClientapi_key="your_api_key"asyncdefmain():asyncwithAsyncWorkflowClient(api_key)asclient:response=awaitclient.run(inputs={"query":"What is machine learning?"},response_mode="blocking",user="user_id"        )response.raise_for_status()result=response.json()print(result.get("data").get("outputs"))asyncio.run(main())
  • async dataset management
importasynciofromdify_clientimportAsyncKnowledgeBaseClientapi_key="your_api_key"dataset_id="your_dataset_id"asyncdefmain():asyncwithAsyncKnowledgeBaseClient(api_key,dataset_id)askb_client:# Get dataset informationdataset_info=awaitkb_client.get_dataset()dataset_info.raise_for_status()print(dataset_info.json())# List documentsdocs=awaitkb_client.list_documents(page=1,page_size=10)docs.raise_for_status()print(docs.json())asyncio.run(main())

Benefits of Async Usage:

  • Better Performance: Handle multiple concurrent API requests efficiently
  • Non-blocking I/O: Don't block the event loop during network operations
  • Scalability: Ideal for applications handling many simultaneous requests
  • Modern Python: Leverages Python's native async/await syntax

Available Async Clients:

  • AsyncDifyClient - Base async client
  • AsyncChatClient - Async chat operations
  • AsyncCompletionClient - Async completion operations
  • AsyncWorkflowClient - Async workflow operations
  • AsyncKnowledgeBaseClient - Async dataset/knowledge base operations
  • AsyncWorkspaceClient - Async workspace operations

About

dify python sdk

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp