Files
wehub-resource-sync e768098d0e
Flake8 Lint / flake8 (push) Waiting to run
Publish Promptflow Doc / Build (push) Waiting to run
Publish Promptflow Doc / Deploy (push) Blocked by required conditions
Spell check CI / Spell_Check (push) Waiting to run
tools_continuous_delivery / Private PyPI main branch release (push) Waiting to run
tools_continuous_delivery / Private PyPI non-main branch release (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:39:52 +08:00

237 lines
6.2 KiB
Plaintext

{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Connection Management\n",
"\n",
"Prompt flow provides various prebuilt connections, including Azure OpenAI, OpenAI, Azure Content Safety, etc. Prebuilt connections enable seamless integration with these resources within the built-in tools. \n",
"\n",
"Additionally, users have the flexibility to create custom connection types using key-value pairs, empowering them to tailor the connections to their specific requirements, particularly in Python tools.\n",
"\n",
"Reach more details about connection types [here](https://learn.microsoft.com/en-us/azure/machine-learning/prompt-flow/concept-connections?view=azureml-api-2).\n",
"## Create different type of connections\n",
"We will use Azure OpenAI connection and custom connection as example to show how to create connection with promptflow sdk."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Install dependent packages"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%pip install -r ../requirements.txt"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Initialize a pf client"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from promptflow.client import PFClient\n",
"\n",
"# client can help manage your runs and connections.\n",
"client = PFClient()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create an Azure OpenAI connection\n",
"\n",
"Prepare your Azure OpenAI resource follow this [instruction](https://learn.microsoft.com/en-us/azure/cognitive-services/openai/how-to/create-resource?pivots=web-portal) and get your `api_key` if you don't have one."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from promptflow.entities import AzureOpenAIConnection\n",
"\n",
"# Initialize an AzureOpenAIConnection object\n",
"connection = AzureOpenAIConnection(\n",
" name=\"my_azure_open_ai_connection\",\n",
" api_key=\"<your-api-key>\",\n",
" api_base=\"<your-endpoint>\",\n",
")\n",
"# Create the connection, note that api_key will be scrubbed in the returned result\n",
"result = client.connections.create_or_update(connection)\n",
"print(result)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create a custom connection"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from promptflow.entities import CustomConnection\n",
"\n",
"# Initialize a custom connection object\n",
"connection = CustomConnection(\n",
" name=\"my_custom_connection\",\n",
" # Secrets is a required field for custom connection\n",
" secrets={\"my_key\": \"<your-api-key>\"},\n",
" configs={\"endpoint\": \"<your-endpoint>\", \"other_config\": \"other_value\"},\n",
")\n",
"# Create the connection, note that all secret values will be scrubbed in the returned result\n",
"result = client.connections.create_or_update(connection)\n",
"print(result)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## List all connections"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"connections = client.connections.list()\n",
"for connection in connections:\n",
" print(connection)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Get a connection by name"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"connection = client.connections.get(name=\"my_custom_connection\")\n",
"print(connection)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Delete a connection by name"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Update a connection\n",
"### Update an Azure OpenAI connection"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"connection = client.connections.get(name=\"my_azure_open_ai_connection\")\n",
"connection.api_base = \"new_value\"\n",
"connection.api_key = (\n",
" \"<original-key>\" # secrets are required again when updating connection using sdk\n",
")\n",
"result = client.connections.create_or_update(connection)\n",
"print(connection)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Update a custom connection"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"connection = client.connections.get(name=\"my_custom_connection\")\n",
"connection.configs[\"other_config\"] = \"new_value\"\n",
"connection.secrets[\n",
" \"my_key\"\n",
"] = \"new_secret_value\" # ValueError: Connection 'my_custom_connection' secrets ['my_key'] must be filled again when updating it.\n",
"result = client.connections.create_or_update(connection)\n",
"print(connection)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# client.connections.delete(name=\"my_custom_connection\")"
]
}
],
"metadata": {
"description": "Manage various types of connections using sdk",
"kernelspec": {
"display_name": "promptflow-sdk",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.17"
}
},
"nbformat": 4,
"nbformat_minor": 2
}