Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions examples/chatgpt/gpt_actions_library/gpt_action_redshift.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@
"metadata": {},
"outputs": [],
"source": [
"! aws redshift-serverless get-workgroup --workgroup-name default-workgroup --query 'workgroup.{address: endpoint.address, port: endpoint.port, SecurityGroupIds: securityGroupIds, SubnetIds: subnetIds}'"
"aws redshift-serverless get-workgroup --workgroup-name default-workgroup --query 'workgroup.{address: endpoint.address, port: endpoint.port, SecurityGroupIds: securityGroupIds, SubnetIds: subnetIds}'"
]
},
{
Expand Down Expand Up @@ -275,7 +275,6 @@
"metadata": {},
"outputs": [],
"source": [
"```yaml\n",
"AWSTemplateFormatVersion: '2010-09-09'\n",
"Transform: AWS::Serverless-2016-10-31\n",
"Description: >\n",
Expand Down Expand Up @@ -402,15 +401,14 @@
" Value: !GetAtt RedshiftMiddlewareFunctionRole.Arn\n",
" CognitoUserPoolArn:\n",
" Description: \"ARN of the Cognito User Pool\"\n",
" Value: !GetAtt MyCognitoUserPool.Arn\n",
"```"
" Value: !GetAtt MyCognitoUserPool.Arn\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Retrieve the URL information, you can then try a cURL request, which should return data in a file format:"
"Retrieve the URL information from the previous command output, you can then run a cURL request, which should return data in a file format:"
]
},
{
Expand All @@ -419,7 +417,7 @@
"metadata": {},
"outputs": [],
"source": [
"! curl -X POST https://10o5fvtsr1.execute-api.us-east-1.amazonaws.com/Prod/sql_statement/ \\\n",
"curl -X POST https://<your_url>/Prod/sql_statement/ \\\n",
"-H \"Content-Type: application/json\" \\\n",
"-d '{ \"sql_statement\": \"SELECT * FROM customers LIMIT 10\", \"workgroup_name\": \"default-workgroup\", \"database_name\": \"pap-db\" }'"
]
Expand Down Expand Up @@ -569,7 +567,7 @@
"\n",
"You now have deployed a GPT that uses a middleware in AWS, in an authenticated manner, that's able to connect to Redsfhit. Users with access (that are in Cognito) can now query your databases to perform data analysis task:\n",
"\n",
"<img src=\"../../../images/chatgpt/redshift_gpt.png\">\n"
"![../../../images/chatgpt/redshift_gpt.png](../../../images/chatgpt/redshift_gpt.png)\n"
]
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@
"metadata": {},
"source": [
"\n",
"<img src=\"../../../images/chatgpt/snowflake_direct_oauth.png\">"
"![../../../images/chatgpt/snowflake_direct_oauth.png](../../../images/chatgpt/snowflake_direct_oauth.png)"
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
"\n",
"This guide will focus on option 1. For those interested in option 2, consider implementing a service like [PostgREST](https://github.com/PostgREST/postgrest) or [Hasura](https://hasura.io/) to streamline the process.\n",
"\n",
"<img src=\"../../../images/gptactions_sql_database_middleware.png\" alt=\"An application architecture diagram depicting the interaction between the user, GPT, middleware, and database\" width=\"75%\" />\n",
"![An application architecture diagram depicting the interaction between the user, GPT, middleware, and database](../../../images/gptactions_sql_database_middleware.png)",
"\n",
"_Application architecture diagram_\n",
"\n",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@
"\n",
"Once you have this deployed, you can go check out the application on AWS Lambda:\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_1.png\">\n",
"![../../../images/chatgpt/aws_lambda_1.png](../../../images/chatgpt/aws_lambda_1.png)\n",
"\n",
"You can confirm that the function is not reachable unless authenticated by running a curl command without any authentication:\n",
"\n",
Expand Down Expand Up @@ -239,35 +239,35 @@
"\n",
"Let's now make sure we create a webpage/domain on which we can log-in. Go to AWS Cognito, select the newly created user pool & go to App Integration tab:\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_3.png\">\n",
"![../../../images/chatgpt/aws_lambda_3.png](../../../images/chatgpt/aws_lambda_3.png)\n",
"\n",
"Create a Cognito Domain by clicking on \"Domains\" then \"Create Cognito Domain\"\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_8.png\">\n",
"![../../../images/chatgpt/aws_lambda_8.png](../../../images/chatgpt/aws_lambda_8.png)\n",
"\n",
"Scroll down to `App client list` on the App Integration page of your User Pool:\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_9.png\">\n",
"![../../../images/chatgpt/aws_lambda_9.png](../../../images/chatgpt/aws_lambda_9.png)\n",
"\n",
"Select your app client and edit the Hosted UI:\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_10.png\">\n",
"![../../../images/chatgpt/aws_lambda_10.png](../../../images/chatgpt/aws_lambda_10.png)\n",
"\n",
"And add a callback URL, Authorization Scheme and OAuth scope:\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_11.png\">\n",
"![../../../images/chatgpt/aws_lambda_11.png](../../../images/chatgpt/aws_lambda_11.png)\n",
"\n",
"_Note that you'll come back to this step when ChatGPT will generate a callback URL for the authentication of your action. The postman URL, should be used only for development purpose._\n",
"\n",
"You can try this connection in Postman, under Authorization for your `<api_url>`, copy/paste the value from AWS for the client_id, client_secret and the URL you set up for the auth domain, make sure to add `openid` in the scope to get a valid access_token:\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_12.png\">\n",
"![../../../images/chatgpt/aws_lambda_12.png](../../../images/chatgpt/aws_lambda_12.png)\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_13.png\">\n",
"![../../../images/chatgpt/aws_lambda_13.png](../../../images/chatgpt/aws_lambda_13.png)\n",
"\n",
"If you're now doing the request on Postman, using the access_token you just retrieve, you'll get a success JSON returned:\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_14.png\">"
"![../../../images/chatgpt/aws_lambda_14.png](../../../images/chatgpt/aws_lambda_14.png)"
]
},
{
Expand Down Expand Up @@ -320,13 +320,13 @@
"Click on Authentication > OAuth.\n",
"We'll now need to fetch AWS Cognito's variables. Let's go on your User Pool > User Pool App Client. From there you can retrieve your client ID and client Secret.\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_15.png\">\n",
"![../../../images/chatgpt/aws_lambda_15.png](../../../images/chatgpt/aws_lambda_15.png)\n",
"\n",
"Copy paste those values in ChatGPT. Now let's add the Token URLs.\n",
"\n",
"From your User Pool you'll find the URL you've previously created for the hosted domain.\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_16.png\">\n",
"![../../../images/chatgpt/aws_lambda_16.png](../../../images/chatgpt/aws_lambda_16.png)\n",
"\n",
"We'll take this URL and append [AWS routes for OAuth](https://docs.aws.amazon.com/cognito/latest/developerguide/federation-endpoints.html).\n",
"\n",
Expand All @@ -351,11 +351,11 @@
"source": [
"Now go back on your GPT (moving out of the action subview), and you'll see a callback URL provided by ChatGPT for the Authentication:\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_17.png\">\n",
"![../../../images/chatgpt/aws_lambda_17.png](../../../images/chatgpt/aws_lambda_17.png)\n",
"\n",
"Get this URL and edit the hosted UI of your User Pool App client & save the changes:\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_18.png\">"
"![../../../images/chatgpt/aws_lambda_18.png](../../../images/chatgpt/aws_lambda_18.png)"
]
},
{
Expand All @@ -371,13 +371,13 @@
"source": [
"You can now test this action again:\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_19.png\">\n",
"![../../../images/chatgpt/aws_lambda_19.png](../../../images/chatgpt/aws_lambda_19.png)\n",
"\n",
"You will be redirected to AWS Cognito page, which you can log-in in using the credentials previously set-up.\n",
"\n",
"If you now ask the GPT to run the same action, it will answer correctly as you're now authenticated and able to run this function!\n",
"\n",
"<img src=\"../../../images/chatgpt/aws_lambda_20.png\">"
"![../../../images/chatgpt/aws_lambda_20.png](../../../images/chatgpt/aws_lambda_20.png)"
]
},
{
Expand Down