zalo
Chat ngay

Thư viện GPT Actions - Snowflake Middleware

Giới thiệu

Trang này cung cấp hướng dẫn & chỉ dẫn cho các nhà phát triển xây dựng Hành động GPT-4o cho một ứng dụng cụ thể. Trước khi tiếp tục, hãy đảm bảo rằng bạn đã làm quen với các thông tin sau:

+ Giới thiệu về Hành động GPT

+ Giới thiệu về Thư viện hành động GPT

+ Ví dụ về việc xây dựng một hành động GPT từ đầu

Hướng dẫn này cung cấp thông tin chi tiết về cách kết nối tài khoản Chat GPT 4 với Snowflake Data Warehouse cho mục đích trả về truy vấn SQL cho ChatGPT để sử dụng với Data Analysis . GPT yêu cầu một hành động giao tiếp với phần mềm trung gian (tức là hàm Azure) để hành động có thể định dạng đúng phản hồi từ Snowflake để sử dụng trong môi trường sổ ghi chép Python. Dữ liệu phải được trả về dưới dạng tệp , do đó hàm phần mềm trung gian phải chuyển đổi phản hồi SQL thành tệp CSV/Excel, có kích thước dưới 10MB.

Tài liệu này sẽ phác thảo hành động GPT của hàm Middleware. Để thiết lập hàm middleware, hãy xem thư viện GPT Actions (Middleware) - Azure Functions . Bạn có thể kết hợp hành động middleware Snowflake này với hành động Snowflake Directly để kích hoạt GPT có thể tạo và kiểm tra các truy vấn SQL trước khi thực hiện chúng.

Giá trị + Ví dụ về các trường hợp sử dụng kinh doanh

Khách hàng Snowflake hiện tại có thể tận dụng các hướng dẫn này để truy vấn dữ liệu từ kho dữ liệu của họ và tải dữ liệu đó vào môi trường Data Analysis Python để có thêm thông tin chi tiết. Điều này cho phép phân tích được hỗ trợ bởi ChatGPT như trực quan hóa các tập dữ liệu, xác định các mẫu/dị thường hoặc xác định các khoảng trống cho mục đích làm sạch dữ liệu. GPT này có thể được sử dụng để thúc đẩy các quyết định kinh doanh từ các tập dữ liệu tương đối nhỏ hoặc để khám phá các tập hợp dữ liệu thông qua AI để tạo ra các giả thuyết khi bạn khám phá tập dữ liệu toàn diện trong công cụ BI của mình, tiết kiệm thời gian và tiền bạc, đồng thời xác định các mẫu chưa từng thấy trước đây.

Thông tin ứng dụng

Liên kết khóa ứng dụng

Hãy xem qua các liên kết này từ Snowflake và Azure trước khi bạn bắt đầu:

Hành động bông tuyết

  • Trang web ứng dụng: https://app.snowflake.com/
  • Tài liệu về ứng dụng Python Connector: https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-connect

Chức năng Azure

  • Trang web ứng dụng: https://learn.microsoft.com/en-us/azure/azure-functions/
  • Tài liệu API ứng dụng: https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference/

Điều kiện tiên quyết của ứng dụng

Trước khi bắt đầu, hãy đảm bảo bạn thực hiện các bước sau trong môi trường ứng dụng của mình:

  • Cung cấp kho dữ liệu Snowflake
  • Đảm bảo rằng người dùng xác thực vào Snowflake qua ChatGPT có quyền truy cập vào cơ sở dữ liệu, lược đồ và bảng có vai trò cần thiết

Ngoài ra, trước khi tạo ứng dụng của bạn trong Azure Function App, bạn sẽ cần một cách để xử lý xác thực người dùng. Bạn sẽ cần thiết lập Đăng ký ứng dụng OAuth trong Azure Entra ID có thể được liên kết với tích hợp bảo mật OAuth bên ngoài của Snowflake. Tích hợp bảo mật OAuth bên ngoài của Snowflake cho phép các hệ thống bên ngoài phát hành mã thông báo truy cập mà Snowflake có thể sử dụng để xác định mức độ truy cập. Trong trường hợp này, nhà cung cấp mã thông báo bên ngoài đó là Azure Entra ID. Vì ChatGPT 4 sẽ kết nối với Azure chứ không phải Snowflake, nên mã thông báo OAuth của người dùng GPT sẽ được Azure cung cấp liên kết với người dùng của họ trong Entra ID. Do đó, bạn sẽ cần một cách để ánh xạ người dùng trong Snowflake với người dùng tương ứng của họ trong Azure.

Tất cả các bước cần thiết cho cả phía Azure và phía Snowflake đều được trình bày dưới đây.

Cấu hình tài nguyên OAuth trong Azure Entra ID

Chúng tôi sẽ thiết lập Đăng ký ứng dụng mới, cấu hình các Phạm vi Snowflake cần thiết trong Azure sẽ được sử dụng và truy xuất tất cả các tham số cấu hình OAuth cần thiết trong cả Snowflake và ChatGPT. Phần này sẽ nằm trong Azure để trong phần tiếp theo, bạn sẽ có thông tin cần thiết để liên kết đến Đăng ký ứng dụng này khi cấu hình ở phía Snowflake.

  1. Điều hướng đến Cổng thông tin Microsoft Azure và xác thực.
  2. Điều hướng đến Azure Entra ID (trước đây là Active Directory).
  3. Nhấp vào Đăng ký ứng dụng trong mục Quản lý .
  4. Nhấp vào Đăng ký mới .
  5. Nhập Snowflake GPT OAuth Clienthoặc giá trị tương tự như Tên .
  6. Xác minh loại tài khoản được hỗ trợ được đặt thành Người thuê đơn lẻ .
  7. Bỏ qua URI chuyển hướng ngay bây giờ. Bạn sẽ quay lại sau khi cấu hình GPT của mình
  8. Nhấp vào Đăng ký .
  9. Ghi lại ID Thư mục (người thuê) ( TENANT_ID) trong mục Essentials . Bạn sẽ sử dụng ID này để tạo AZURE_AD_ISSUERAZURE_AD_JWS_KEY_ENDPOINT.
    • AZURE_AD_ISSUERhttps://sts.windows.net/TENANT_ID/
    • AZURE_AD_JWS_KEY_ENDPOINThttps://login.microsoftonline.com/TENANT_ID/discovery/v2.0/keys
  10. Nhấp vào Điểm cuối trong giao diện Tổng quan .
  11. Ở phía bên phải, hãy lưu ý điểm cuối xác thực OAuth 2.0 (v2) là AZURE_AD_OAUTH_AUTHORIZATION_ENDPOINT và điểm cuối mã thông báo OAuth 2.0 (v2) là AZURE_AD_OAUTH_TOKEN_ENDPOINT.
    • Các điểm cuối phải giống với https://login.microsoftonline.com/90288a9b-97df-4c6d-b025-95713f21cef9/oauth2/v2.0/authorizationvà https://login.microsoftonline.com/90288a9b-97df-4c6d-b025-95713f21cef9/oauth2/v2.0/token.
  12. Nhấp vào **Phơi bày API **trong mục Quản lý .
  13. Nhấp vào liên kết Đặt bên cạnh URI ID ứng dụng để đặt Application ID URI.
    • Phải Application ID URIlà duy nhất trong thư mục của tổ chức bạn, chẳng hạn như https://your.company.com/4d2a8c2b-a5f4-4b86-93ca-294185f45f2e. Giá trị này sẽ được gọi là trong các bước cấu hình tiếp theo.
  14. Để thêm Vai trò Snowflake làm phạm vi OAuth cho các luồng OAuth trong đó máy khách theo chương trình hoạt động thay mặt cho người dùng, hãy nhấp vào Thêm phạm vi để thêm phạm vi đại diện cho vai trò Snowflake.
    • Nhập phạm vi bằng cách nhập tên vai trò Snowflake với session:scope:tiền tố. Ví dụ, đối với vai trò Snowflake Analyst, hãy nhập session:scope:analyst.
    • Chọn người có thể đồng ý.
    • Nhập tên hiển thị cho phạm vi (ví dụ: Quản trị viên tài khoản).
    • Nhập mô tả cho phạm vi (ví dụ: Có thể quản lý tài khoản Snowflake).
    • Nhấp vào Thêm phạm vi .
    • Lưu phạm vi dưới dạng AZURE_AD_SCOPE. Nó phải là sự kết hợp của bạn Application ID URIScope name
  15. Trong phần Tổng quan , hãy sao chép ClientIDtừ trường ID ứng dụng (khách hàng) . Trường này sẽ được gọi là OAUTH_CLIENT_IDtrong các bước sau.
  16. Nhấp vào Chứng chỉ & bí mật rồi nhấp vào Bí mật máy khách mới .
  17. Thêm mô tả về bí mật.
  18. Chọn 730 ngày (24 tháng) . Để thử nghiệm, hãy chọn những bí mật không hết hạn sớm.
  19. Nhấp vào Thêm . Sao chép bí mật. Điều này sẽ được gọi là OAUTH_CLIENT_SECRETtrong các bước sau.
  20. Đối với các máy khách theo chương trình sẽ yêu cầu Mã truy cập thay mặt cho người dùng, hãy cấu hình Quyền được ủy quyền cho Ứng dụng như sau.
    • Nhấp vào Quyền API .
    • Nhấp vào Thêm quyền .
    • Nhấp vào API của tôi .
    • Nhấp vào Tài nguyên OAuth Snowflake mà bạn đã tạo trong Cấu hình tài nguyên OAuth trong Azure AD .
    • Nhấp vào hộp Quyền được ủy quyền .
    • Kiểm tra Quyền liên quan đến Phạm vi được xác định trong Ứng dụng mà bạn muốn cấp cho máy khách này.
    • Nhấp vào Thêm quyền .
    • Nhấp vào nút Grant Admin Consent để cấp quyền cho máy khách. Lưu ý rằng vì mục đích thử nghiệm, quyền được cấu hình theo cách này. Tuy nhiên, trong môi trường sản xuất, việc cấp quyền theo cách này là không nên.
    • Nhấp vào Có .

Tạo tích hợp bảo mật trong Snowflake

Sau khi Đăng ký ứng dụng hoàn tất trong Azure Entra ID, bước tiếp theo là liên kết Đăng ký ứng dụng đó với Snowflake thông qua Tích hợp bảo mật OAuth bên ngoài. Tham external_oauth_audience_listsố của tích hợp bảo mật phải khớp với URI ID ứng dụng mà bạn đã chỉ định khi cấu hình Azure Entra ID.

Issuer và điểm cuối JWS Keys cũng sẽ đến từ các giá trị được thu thập trong các bước trước đó. Thuộc tính ánh xạ người dùng có thể được đặt thành hoặc , và đây là cách thông tin đăng nhập Microsoft của người dùng sẽ được ánh xạ tới người dùng của họ trong Snowflake để đảm bảo các quyền trong Snowflake được tôn trọng bởi mã thông báo truy cập được cấp cho ChatGPT.EMAIL_ADDRESSLOGIN_NAME

CREATE OR REPLACE SECURITY INTEGRATION AZURE_OAUTH_INTEGRATION TYPE = EXTERNAL_OAUTH ENABLED = TRUE EXTERNAL_OAUTH_TYPE = 'AZURE' EXTERNAL_OAUTH_ISSUER = '' EXTERNAL_OAUTH_JWS_KEYS_URL = '' EXTERNAL_OAUTH_AUDIENCE_LIST = ('') EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'upn' EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'EMAIL_ADDRESS';

Thông tin phần mềm trung gian:

Hãy đảm bảo bạn thực hiện các bước sau trong môi trường Azure của mình:

  • Azure Portal hoặc VS Code có quyền truy cập để tạo Azure Function Apps và Azure Entra App Registrations
  • Có một phần chi tiết trong hướng dẫn này liên quan đến việc triển khai và thiết kế chức năng cần thiết để gói phản hồi từ Snowflake nhằm trả về kết quả truy vấn dưới dạng CSV cho ChatGPT. Azure Function App cho phép GPT của bạn thu thập các tập dữ liệu lớn hơn vì ChatGPT có thể thu thập nhiều dữ liệu hơn từ các phản hồi tệp thay vì từ các tải trọng ứng dụng/json. Ngoài ra, các tập dữ liệu đó sẽ chỉ khả dụng cho Phân tích dữ liệu (hay còn gọi là Trình thông dịch mã) với phản hồi được định dạng dưới dạng tệp CSV.

Ứng dụng Azure Function

Bây giờ chúng ta đã tạo GPT và xử lý xác thực Azure/Snowflake, chúng ta có thể tạo chính Azure Function App để thực thi truy vấn SQL và xử lý định dạng phản hồi, cho phép GPT tải xuống kết quả dưới dạng CSV để sử dụng với Phân tích dữ liệu.

Hãy làm theo Azure Cookbook Guide này để biết thêm chi tiết về cách triển khai Azure Function App. Dưới đây bạn sẽ tìm thấy mã mẫu để thêm vào hàm.

Mã này có mục đích là định hướng - mặc dù nó có thể hoạt động ngay khi cài đặt, bạn vẫn nên tùy chỉnh nó dựa trên nhu cầu cụ thể của GPT và thiết lập CNTT của bạn.

Mã ứng dụng

Bạn sẽ cần thiết lập các luồng sau trong Azure Function App của mình:

  • Trích xuất mã thông báo từ yêu cầu HTTP và sử dụng nó để kết nối với Snowflake
  • Thực hiện truy vấn SQL và ghi kết quả vào CSV
  • Lưu trữ tạm thời CSV đó trong Blob Storage*
  • Tạo URL được ký trước để truy cập CSV đó một cách an toàn*
  • Trả lời bằng openaiFileResponse

*Các bước này có thể không cần thiết nếu bạn sử dụng tùy chọn luồng tệp thay vì tùy chọn url để trả tệp về GPT. Thông tin chi tiết bên dưới.

Đảm bảo bạn đã cài đặt và nhập các thư viện cần thiết vào tập lệnh của mình. Ngoài các thư viện chuẩn của Python, tập lệnh mẫu này tận dụng những điều sau:

import azure.functions as func
from azure.storage.blob import BlobServiceClient, generate_blob_sas, BlobSasPermissions, ContentSettings
import snowflake.connector
import jwt # pyjwt for token decoding

Kết nối với Snowflake

Để kết nối với Snowflake, bạn sẽ cần trích xuất mã thông báo truy cập được gán từ Azure Entra ID từ tiêu đề Authorization và sử dụng mã thông báo đó khi kết nối với máy chủ Snowflake.

Trong ví dụ này, tên người dùng Snowflake là địa chỉ email giúp đơn giản hóa việc ánh xạ ID người dùng Entra được trích xuất từ ​​mã thông báo truy cập HTTP sang ID người dùng Snowflake cần thiết để kết nối. Nếu tổ chức của bạn không như vậy, bạn có thể ánh xạ địa chỉ email với ID người dùng Snowflake trong ứng dụng Python của mình.

Ứng dụng của tôi được xây dựng để giao tiếp với một Tài khoản Snowflake (tức là ab12345.eastus2.azure) và Kho. Nếu bạn cần truy cập nhiều tài khoản hoặc kho, bạn có thể cân nhắc truyền các tham số này trong tham số hành động GPT của mình để bạn có thể trích xuất chúng từ yêu cầu HTTP.

# Extract the token from the Authorization header
auth_header = req.headers.get('Authorization')
token_type, token = auth_header.split()
try: # Extract email address from token to use for Snowflake user mapping # If Snowflake usernames are not emails, then identify the username accordingly decoded_token = jwt.decode(token, options={"verify_signature": False}) email = decoded_token.get('upn') conn = snowflake.connector.connect( user=email, # Snowflake username, i.e., user's email in my example account=SNOWFLAKE_ACCOUNT, # Snowflake account, i.e., ab12345.eastus2.azure authenticator="oauth", token=token, warehouse=SNOWFLAKE_WAREHOUSE # Replace with Snowflake warehouse ) logging.info("Successfully connected to Snowflake.")
except Exception as e: logging.error(f"Failed to connect to Snowflake: {e}")

Thực hiện truy vấn và lưu CSV

Sau khi kết nối với Snowflake, bạn sẽ cần thực hiện truy vấn và lưu trữ kết quả vào CSV. Mặc dù vai trò trong Snowflake sẽ ngăn chặn mọi khả năng truy vấn có hại, bạn có thể muốn khử trùng truy vấn của mình trong ứng dụng (không bao gồm bên dưới) giống như bạn thực hiện bất kỳ truy vấn SQL theo chương trình nào khác.

# Extract SQL query from request parameters or body
sql_query = req.params.get('sql_query')
try: # Use the specified warehouse cursor = conn.cursor() # Execute the query cursor.execute(sql_query) results = cursor.fetchall() column_names = [desc[0] for desc in cursor.description] logger.info(f"Query executed successfully: {sql_query}") # Convert results to CSV csv_file_path = write_results_to_csv(results, column_names)
except Exception as e: logger.error(f"Error executing query or processing data: {e}")
def write_results_to_csv(results, column_names): try: # Create a temporary file temp_file = tempfile.NamedTemporaryFile(delete=False, mode='w', newline='') csv_writer = csv.writer(temp_file) csv_writer.writerow(column_names) # Write the column headers csv_writer.writerows(results) # Write the data rows temp_file.close() # Close the file to flush the contents return temp_file.name # Return file path except Exception as e: logger.error(f"Error writing results to CSV: {e}")

Lưu trữ tệp trong Blob Storage

Có 2 phương pháp để trả về tệp cho ChatGPT để xử lý. Bạn có thể truyền dữ liệu được mã hóa base64 cùng với mimeType và tên tệp trong phản hồi danh sách openaiFileResponse hoặc bạn có thể trả về danh sách URL . Trong giải pháp này, chúng tôi sẽ tập trung vào phương pháp sau.

Để thực hiện việc này, bạn sẽ cần tải tệp CSV lên Azure Blob Storage và trả về URL đã ký trước để truy cập tệp đó một cách an toàn trong ChatGPT. Điều quan trọng cần lưu ý là để tải xuống URL trong ChatGPT, bạn sẽ cần đảm bảo URL đó bao gồm content_type và content_disposition, như trong ví dụ bên dưới. Nếu bạn muốn kiểm tra xem URL có các tiêu đề cần thiết hay không, bạn có thể sử dụng curl -I từ bất kỳ thiết bị đầu cuối nào.

Bạn sẽ cần lấy Chuỗi kết nối cho kho lưu trữ Azure của mình theo hướng dẫn tại đây .

def upload_csv_to_azure(file_path, container_name, blob_name, connect_str): try: # Create the BlobServiceClient object which will be used to create a container client blob_service_client = BlobServiceClient.from_connection_string(connect_str) # Create a blob client using the local file name as the name for the blob blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name) # Upload the file with specified content settings with open(file_path, "rb") as data: blob_client.upload_blob(data, overwrite=True, content_settings=ContentSettings( content_type='text/csv', content_disposition=f'attachment; filename="{blob_name}"' )) logger.info(f"Successfully uploaded {file_path} to {container_name}/{blob_name}") # Generate a SAS token for the blob sas_token = generate_blob_sas( account_name=blob_service_client.account_name, container_name=container_name, blob_name=blob_name, account_key=blob_service_client.credential.account_key, permission=BlobSasPermissions(read=True), expiry=datetime.datetime.utcnow() + datetime.timedelta(hours=1) # Token valid for 1 hour ) # Generate a presigned URL using the SAS token url = f"https://{blob_service_client.account_name}.blob.core.windows.net/{container_name}/{blob_name}?{sas_token}" logger.info(f"Generated presigned URL: {url}") return url except Exception as e: logger.error(f"Error uploading file to Azure Blob Storage: {e}") raise

Định dạng openaiFileResponse

Cuối cùng, bạn sẽ cần định dạng phản hồi phù hợp để hướng dẫn ChatGPT xử lý phản hồi đó dưới dạng tệp hoặc chuỗi tệp. openaiFileResponse là danh sách có thể bao gồm tối đa 10 URL (hoặc mã hóa base64 nếu sử dụng tùy chọn nội tuyến ).

# Format the response so ChatGPT treats it as a file
response = { 'openaiFileResponse': [csv_url]
}
cursor.close()
conn.close()
return func.HttpResponse( json.dumps(response), status_code=200
)

Có rất nhiều thành phần chuyển động trong ứng dụng này, vì vậy việc kiểm tra Azure Function App của bạn có thể rất quan trọng. ChatGPT có thể là một nền tảng kiểm tra khó khăn vì các yêu cầu và phản hồi đôi khi có thể không rõ ràng hơn mức cần thiết để gỡ lỗi. Kiểm tra ban đầu ứng dụng của bạn thông qua cURL hoặc Postman để gọi yêu cầu HTTP từ một môi trường được kiểm soát nhiều hơn sẽ cho phép bạn gỡ lỗi và phân loại các vấn đề dễ dàng hơn. Khi bạn xác định rằng các phản hồi đang được trả về như mong đợi trong các công cụ đó, bạn đã sẵn sàng để xây dựng GPT của mình.

Các bước ChatGPT

Hướng dẫn tùy chỉnh GPT

Sau khi bạn đã tạo GPT tùy chỉnh, hãy sử dụng văn bản bên dưới trong bảng Hướng dẫn để lấy cảm hứng. Bạn có thắc mắc không? Hãy xem Ví dụ về Bắt đầu để xem bước này hoạt động chi tiết hơn như thế nào.

Ví dụ hướng dẫn

Điều quan trọng là ChatGPT phải hiểu lược đồ bảng của bạn để tạo đúng các truy vấn SQL. Có nhiều phương pháp khác nhau để thực hiện việc này và Bộ hướng dẫn này đại diện cho cách trực tiếp nhất. Chúng tôi đang nỗ lực xuất bản các hướng dẫn bổ sung cho các phiên bản Snowflake GPT khác nhau mà bạn có thể muốn xây dựng để cho phép làm việc với nhiều bảng, lược đồ và cơ sở dữ liệu khác nhau hoặc thậm chí để học động cho các lược đồ có xu hướng thay đổi theo thời gian.

Dưới đây là một số hướng dẫn cơ bản khi làm việc với một lược đồ và bảng duy nhất. GPT này đã được tối ưu hóa cho một trường hợp sử dụng duy nhất (phân tích dữ liệu chuyến bay từ tháng 1 năm 2013 ra khỏi NYC) cho phép sử dụng các hướng dẫn đơn giản nhất để cung cấp hiệu suất GPT đáng tin cậy nhất.

Bạn là chuyên gia viết truy vấn SQL để lấy dữ liệu từ Snowflake. Bạn giúp người dùng chuyển đổi lời nhắc của họ thành truy vấn SQL. Bất kỳ câu hỏi nào xung quanh dữ liệu chuyến bay sẽ được chuyển đổi thành truy vấn SQL Snowflake truy cập vào bảng FLIGHTS.PUBLIC.JAN_2013_NYC. Truyền bất kỳ truy vấn nào vào tham số "sql_query"

Sơ đồ của bảng bao gồm

ID    NUMBER    A unique identifier for each flight
YEAR    NUMBER    The year of the flight
MONTH    NUMBER    The month of the flight
DAY        NUMBER    The day of the month on which the flight departed
DEP_TIME    NUMBER    The actual departure time of the flight
SCHED_DEP_TIME    NUMBER    The scheduled departure time of the flight
DEP_DELAY    NUMBER    The departure delay in minutes (negative values indicate early departures)
ARR_TIME    NUMBER    The actual arrival time of the flight
SCHED_ARR_TIME    NUMBER    The scheduled arrival time of the flight
ARR_DELAY    NUMBER    The arrival delay in minutes (negative values indicate early arrivals)
CARRIER_CODE    TEXT    The carrier code of the airline
FLIGHT    NUMBER    The flight number
TAILNUM    TEXT    The aircraft tail number
ORIGIN_AIRPORT_CODE    TEXT    The origin airport code
DEST_AIRPORT_CODE    TEXT    The destination airport code
AIR_TIME    NUMBER    The total airtime of the flight in minutes
DISTANCE    NUMBER    The distance traveled by the flight in miles
HOUR    NUMBER    The hour part of the scheduled departure time
MINUTE    NUMBER    The minute part of the scheduled departure time
TIME_HOUR    NUMBER    The time at which the flight departed (rounded to the nearest hour)
CARRIER_NAME    TEXT    The full name of the airline carrier
ORIGIN_AIRPORT_NAME    TEXT    The full name of the origin airport
ORIGIN_REGION    TEXT    The region code of the origin airport
ORIGIN_MUNICIPALITY    TEXT    The city where the origin airport is located
ORIGIN_COORDINATES    TEXT    The geographical coordinates of the origin airport
DEST_AIRPORT_NAME    TEXT    The full name of the destination airport
DEST_REGION    TEXT    The region code of the destination airport
DEST_MUNICIPALITY    TEXT    The city where the destination airport is located
DEST_COORDINATES    TEXT    The geographical coordinates of the destination airport

Khi người dùng yêu cầu dữ liệu về chuyến bay, hãy thực hiện như sau:

  1. Sử dụng executeSQLhành động để gửi yêu cầu POST đến điểm cuối chức năng Azure
  2. Nhận tệp được trả về như một phần của phản hồi Hành động. Hiển thị tệp dưới dạng bảng tính
  3. Thực hiện phân tích trên tệp và cung cấp thông tin cần thiết mà người dùng đã yêu cầu

Người dùng sẽ muốn đặt câu hỏi về dữ liệu trong trình thông dịch mã, vì vậy hãy sử dụng trình thông dịch này để có được thông tin phân tích dữ liệu từ tập dữ liệu bạn đã lấy.

Lược đồ OpenAPI

Sau khi tạo GPT tùy chỉnh, hãy sao chép văn bản bên dưới trong bảng Hành động, thay thế các giá trị giữ chỗ bằng thông tin chi tiết về hàm cụ thể của bạn và cập nhật các tham số dựa trên bất kỳ đầu vào bổ sung nào mà bạn đã xây dựng vào Ứng dụng hàm Azure của mình.

Bạn có thắc mắc không? Hãy xem Ví dụ về Bắt đầu để biết bước này hoạt động chi tiết hơn như thế nào.

openapi: 3.1.0
info: title: Snowflake GPT API description: API to execute SQL queries on Snowflake and get the results as a CSV file URL. version: 1.0.0
servers: - url: https://.azurewebsites.net description: Azure Function App server running Snowflake integration application
paths: /api/?code=: post: operationId: executeSQL summary: Executes a SQL query on Snowflake and returns the result file URL as a CSV. requestBody: required: true content: application/json: schema: type: object properties: sql_query: type: string description: The SQL query to be executed on Snowflake. required: - sql_query responses: '200': description: Successfully executed the query. content: application/json: schema: type: object properties: openaiFileResponse: type: array items: type: string format: uri description: Array of URLs pointing to the result files. '401': description: Unauthorized. Missing or invalid authentication token. '400': description: Bad Request. The request was invalid or cannot be otherwise served. '500': description: Internal Server Error. An error occurred on the server.
components: schemas: {} 

Câu hỏi thường gặp & Xử lý sự cố

  • Các tệp được trả về ChatGPT bị giới hạn kích thước ở mức 10MB. Yêu cầu của bạn có thể không thành công nếu tệp được trả về lớn hơn kích thước đó. Đảm bảo bao gồm LIMITs trong các lệnh SQL của bạn nếu bạn thấy mình đang gặp phải những giới hạn này.

  • Tại sao Azure Function App lại được yêu cầu ngay từ đầu? Tính năng Data Analysis (hay còn gọi là Code Interpreter) của ChatGPT phụ thuộc vào môi trường Python an toàn tách biệt với cửa sổ ngữ cảnh của mô hình. Dữ liệu được truyền đến Data Analysis phải được thực hiện bằng cách tải tệp lên ngay hôm nay. Các hành động GPT trả về dữ liệu sau đó phải trả về dữ liệu đó dưới dạng tệp CSV hoặc loại tệp dữ liệu khác. Để trả về tệp thông qua hành động GPT, phản hồi phải được gói trong một openaiFileResponseđối tượng. Điều này yêu cầu mã tùy chỉnh để định dạng phản hồi đúng cách.

  • Công ty tôi sử dụng một nhà cung cấp đám mây khác với Azure. Để kết nối các chức năng phần mềm trung gian khác với ChatGPT thông qua hành động GPT, vui lòng tham khảo các sách hướng dẫn phần mềm trung gian AWS hoặc GCP khác . Bạn có thể sử dụng các khái niệm được thảo luận trong sách hướng dẫn này để tư vấn về các cân nhắc khi xây dựng ứng dụng phần mềm trung gian của mình, nhưng việc kết nối phần mềm trung gian đó với Snowflake có thể khác nhau đối với các nhà cung cấp đám mây khác nhau. Ví dụ: Snowflake đã xây dựng tích hợp OAuth bên ngoài dành riêng cho việc liên kết với Azure Entra ID.

  • Làm thế nào để tôi giới hạn các tập dữ liệu mà GPT của tôi có quyền truy cập? Có thể quan trọng khi giới hạn phạm vi truy cập mà ChatGPT có trong Snowflake. Có một số cách để thực hiện việc này:

    • Vai trò Snowflake có thể giới hạn người có quyền truy cập vào bảng nào và sẽ được tôn trọng bởi mã thông báo truy cập của người dùng GPT do Azure Entra ID cung cấp

    • Trong hàm phần mềm trung gian của bạn, bạn có thể thêm các kiểm tra hợp lý để xác minh các bảng được truy cập đã được ứng dụng đó chấp thuận

    • Bạn có thể muốn tạo một Cơ sở dữ liệu/Kho hoàn toàn mới dành riêng cho việc tích hợp với ChatGPT, xóa mọi thông tin nhạy cảm, chẳng hạn như PII.

     

  • Sơ đồ gọi sai kho hoặc tập dữ liệu: Nếu ChatGPT gọi sai kho hoặc cơ sở dữ liệu, hãy cân nhắc cập nhật hướng dẫn của bạn để làm rõ hơn (a) kho/cơ sở dữ liệu nào sẽ được gọi hoặc (b) yêu cầu người dùng cung cấp các thông tin chi tiết chính xác đó trước khi chạy truy vấn

Xem thêm: mua tài khoản ChatGPT Plus chính hãng giá rẻ với nhiều ưu đãi đặc biệt hấp dẫn duy nhất ngày hôm nay

Hot Deal

Họ tên (*)

Số điện thoại (*)

Email (*)

Dịch vụ

Đăng ký để nhận bản tin mới nhất !