Skip to content

Commit bc95b83

Browse files
update doc converter policies
1 parent 6c1c544 commit bc95b83

File tree

9 files changed

+91
-33
lines changed

9 files changed

+91
-33
lines changed

ai-hub/ai-document-converter/policies/terraform/api_gateway.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ resource "oci_apigateway_deployment" "ai_application_apigateway_deployment" {
4040
type = "OAUTH2"
4141
use_cookies_for_intermediate_steps = "true"
4242
use_cookies_for_session = "true"
43-
max_expiry_duration_in_hours = 1
43+
max_expiry_duration_in_hours = 1
4444
}
4545
validation_policy {
4646
additional_validation_policy {
@@ -112,7 +112,7 @@ resource "oci_apigateway_deployment" "ai_application_apigateway_deployment" {
112112
}
113113
methods = ["ANY"]
114114
path = "/{req*}"
115-
request_policies {
115+
request_policies {
116116
header_transformations {
117117
set_headers {
118118
items {

ai-hub/ai-document-converter/policies/terraform/container_instances.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ resource "oci_container_instances_container_instance" "ai_container_instance" {
44
compartment_id = var.vcn_compartment_id
55
containers {
66
#Required
7-
image_url = local.image
7+
image_url = local.container_image
88

99
#Optional
1010
environment_variables = {

ai-hub/ai-document-converter/policies/terraform/identity_app.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ resource "oci_identity_domains_app" "ai_application_confidential_app" {
44
well_known_id = "CustomWebAppTemplateId"
55
}
66
client_type = "confidential"
7-
description = "Confidential Application for AI Translation Application"
8-
display_name = "ai__translation_application_confidential_app_${random_string.randomstring.result}"
7+
description = "Confidential Application for AI Document Converter Application"
8+
display_name = "ai__doc_converter_application_confidential_app_${random_string.randomstring.result}"
99
schemas = ["urn:ietf:params:scim:schemas:oracle:idcs:App"]
1010
allowed_operations = ["introspect"]
1111
idcs_endpoint = data.oci_identity_domain.application_identity_domain.url
@@ -14,7 +14,7 @@ resource "oci_identity_domains_app" "ai_application_confidential_app" {
1414
bypass_consent = true
1515
allowed_grants = ["authorization_code", "client_credentials", "urn:ietf:params:oauth:grant-type:jwt-bearer", "implicit"]
1616
all_url_schemes_allowed = true
17-
redirect_uris = ["https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/", "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/ui","https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/ui/", "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/ui/gradio", "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/ui/playground","https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/ui/docs", "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/callback"]
17+
redirect_uris = ["https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/", "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/ui", "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/ui/", "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/ui/gradio", "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/ui/playground", "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/ui/docs", "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/callback"]
1818
post_logout_redirect_uris = ["https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/"]
1919
audience = oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname
2020
}

ai-hub/ai-document-converter/policies/terraform/model.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ data "archive_file" "model_zip" {
2929
resource "oci_datascience_model" "ai_model" {
3030
compartment_id = var.data_science_project_compartment_id
3131
project_id = var.project_ocid
32-
display_name = var.model_display_name
32+
display_name = var.model_display_name
3333
description = local.model_desc
3434

3535
# Upload artifact inline (ZIP created above)

ai-hub/ai-document-converter/policies/terraform/model_deployment.tf

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ resource "oci_datascience_model_deployment" "ai_deployment" {
2020
# subnet_id = var.subnet_ocid
2121
subnet_id = local.app_subnet_id
2222
}
23-
model_id = oci_datascience_model.ai_model.id
23+
model_id = oci_datascience_model.ai_model.id
2424
bandwidth_mbps = var.deployment_bandwidth_mbps
2525
scaling_policy {
2626
instance_count = var.deployment_instance_count
@@ -41,21 +41,37 @@ resource "oci_datascience_model_deployment" "ai_deployment" {
4141
MAX_OUTPUT_TOKEN = var.multimodal_max_output_token
4242
GENAI_COMPARTMENT_OCID = var.genai_compartment_ocid
4343
PROMPT_VERSION = var.prompt_version,
44-
MODEL_DEPLOY_CUSTOM_ENDPOINTS = "[{\"endpointURI\": \"/api/list\", \"httpMethods\": [\"GET\"]}, {\"endpointURI\": \"/api/convert\", \"httpMethods\": [\"POST\"]}, {\"endpointURI\": \"/api/convert/file\", \"httpMethods\": [\"POST\"]}]"
44+
MODEL_DEPLOY_CUSTOM_ENDPOINTS = "[{\"endpointURI\": \"/api/list\", \"httpMethods\": [\"GET\"]}, {\"endpointURI\": \"/api/convert\", \"httpMethods\": [\"POST\"]}, {\"endpointURI\": \"/api/convert/file\", \"httpMethods\": [\"POST\"]}, {\"endpointURI\": \"/mcp/\", \"httpMethods\": [\"POST\"], \"streaming\": true}]"
4545
}
4646
}
4747
}
4848

4949
# Logging, use the same log group and log ocid to reduce the variables.
50-
category_log_details {
51-
access {
52-
log_group_id = var.log_group_ocid
53-
log_id = var.log_ocid
54-
}
55-
predict {
56-
log_group_id = var.log_group_ocid
57-
log_id = var.log_ocid
50+
dynamic "category_log_details" {
51+
for_each = (
52+
var.log_group_ocid != null && var.log_ocid != "" &&
53+
var.log_group_ocid != null && var.log_ocid != ""
54+
) ? [1] : []
55+
56+
content {
57+
access {
58+
log_group_id = var.log_group_ocid
59+
log_id = var.log_ocid
60+
}
61+
predict {
62+
log_group_id = var.log_group_ocid
63+
log_id = var.log_ocid
64+
}
5865
}
5966
}
6067

68+
freeform_tags = {
69+
"ai-hub-solution-name" = "PDF to markdown conversion"
70+
"ai_solution_playground_url" = "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/"
71+
"ai_solution_mcp_endpoint" = "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/mcp"
72+
"ai_solution_api_endpoint_list_apis" = "https://${oci_apigateway_gateway.ai_application_oci_apigateway_gateway.hostname}/api/convert"
73+
}
74+
75+
depends_on = [oci_identity_policy.ai_solution_policies]
76+
6177
}

ai-hub/ai-document-converter/policies/terraform/output.tf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@ output "base_url" {
33
value = "${oci_apigateway_deployment.ai_application_apigateway_deployment.endpoint}"
44
}
55

6-
output "mcp_endpoint" {
7-
description = "MCP Endpoint"
8-
value = "${oci_apigateway_deployment.ai_application_apigateway_deployment.endpoint}mcp"
9-
}
10-
116
output "playground_ui" {
127
description = "Playground UI"
138
value = "${oci_apigateway_deployment.ai_application_apigateway_deployment.endpoint}ui/playground"
@@ -23,17 +18,22 @@ output "api_schema" {
2318
value = "${oci_apigateway_deployment.ai_application_apigateway_deployment.endpoint}api/openapi.json"
2419
}
2520

21+
output "mcp_endpoint" {
22+
description = "MCP Endpoint"
23+
value = "${oci_datascience_model_deployment.ai_deployment.model_deployment_url}/predictWithResponseStream/mcp/"
24+
}
25+
2626
output "api_endpoint_convert" {
2727
description = "API Endpoint - Convert PDF from Object Storage to Markdown"
28-
value = "${oci_apigateway_deployment.ai_application_apigateway_deployment.endpoint}api/convert"
28+
value = "${oci_datascience_model_deployment.ai_deployment.model_deployment_url}/predict/api/convert"
2929
}
3030

3131
output "api_endpoint_convert_file" {
3232
description = "API Endpoint - Convert PDF uploaded as file to Markdown"
33-
value = "${oci_apigateway_deployment.ai_application_apigateway_deployment.endpoint}api/convert/file"
33+
value = "${oci_datascience_model_deployment.ai_deployment.model_deployment_url}/predict/api/convert/file"
3434
}
3535

3636
output "api_endpoint_list_apis" {
3737
description = "API Endpoint - Supported APIs for Document Conversion"
38-
value = "${oci_apigateway_deployment.ai_application_apigateway_deployment.endpoint}api/list"
38+
value = "${oci_datascience_model_deployment.ai_deployment.model_deployment_url}/predict/api/list"
3939
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
resource "oci_identity_dynamic_group" "ai_solution_group" {
2+
compartment_id = var.tenancy_ocid
3+
description = "Dynamic Group for AI Solution"
4+
name = "ai_solution_group-${random_string.randomstring.result}"
5+
matching_rule = "any { all {resource.type='datasciencemodeldeployment',resource.compartment.id='${var.data_science_project_compartment_id}'}, all {resource.type='apigateway',resource.compartment.id='${var.compartment_id}'},all {resource.type='computecontainerinstance',resource.compartment.id='${var.vcn_compartment_id}'},all {resource.type='datasciencejobrun', resource.compartment.id='${var.data_science_project_compartment_id}'}}"
6+
}
7+
8+
locals {
9+
policies = [
10+
"allow service datascience to use virtual-network-family in compartment id ${var.vcn_compartment_id}",
11+
"allow dynamic-group ${oci_identity_dynamic_group.ai_solution_group.name} to manage secret-family in compartment id ${var.vault_compartment_id}",
12+
"allow dynamic-group ${oci_identity_dynamic_group.ai_solution_group.name} to use virtual-network-family in compartment id ${var.vcn_compartment_id}",
13+
"allow dynamic-group ${oci_identity_dynamic_group.ai_solution_group.name} to use logging-family in compartment id ${var.log_compartment_id}",
14+
"allow dynamic-group ${oci_identity_dynamic_group.ai_solution_group.name} to manage data-science-family in compartment id ${var.data_science_project_compartment_id}",
15+
"allow dynamic-group ${oci_identity_dynamic_group.ai_solution_group.name} to manage generative-ai-family in tenancy",
16+
"allow dynamic-group ${oci_identity_dynamic_group.ai_solution_group.name} to read repos in tenancy"
17+
]
18+
}
19+
20+
resource "oci_identity_policy" "ai_solution_policies" {
21+
compartment_id = "${var.tenancy_ocid}"
22+
description = "Dynamic group policies for AI Solution"
23+
name = "ai_solution_policies-${random_string.randomstring.result}"
24+
statements = local.policies
25+
depends_on = [oci_identity_dynamic_group.ai_solution_group]
26+
}

ai-hub/ai-document-converter/policies/terraform/schema.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ variableGroups:
6363
- data_science_project_compartment_id
6464
- project_ocid
6565
- deployment_display_name
66+
- log_compartment_id
67+
- log_group_ocid
68+
- log_ocid
6669

6770

6871
variables:
@@ -264,6 +267,12 @@ variables:
264267
title: Model Deployment display name
265268
description: A user-friendly name to help you easily identify the Model Deployment resource in Data Science Project.
266269
required: true
270+
log_compartment_id:
271+
type: oci:identity:compartment:id
272+
required: false
273+
title: Logs Compartment Id
274+
description: Compartment in which Log Group and Logs are present.
275+
default: compartment_ocid
267276
log_group_ocid:
268277
type: string
269278
title: Log Group ocid

ai-hub/ai-document-converter/policies/terraform/variables.tf

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,17 +94,23 @@ variable "data_science_project_compartment_id" {
9494
type = string
9595
}
9696
variable "project_ocid" {
97-
type = string
97+
type = string
9898
description = "Data Science project in which resources needs to be created"
9999
}
100100

101+
variable "log_compartment_id" {
102+
description = "Compartment in which Logs are present"
103+
type = string
104+
}
101105
variable "log_group_ocid" {
102-
type = string
106+
type = string
103107
description = "Log Group Ocid where logs will be stored"
108+
default = ""
104109
}
105110
variable "log_ocid" {
106-
type = string
111+
type = string
107112
description = "Log ocid where where logs needs to be stored"
113+
default = ""
108114
}
109115

110116
variable "shape" {
@@ -149,14 +155,14 @@ variable "multimodal_llm_provider" {
149155
default = "genai"
150156
}
151157
variable "genai_compartment_ocid" {
152-
type = string
158+
type = string
153159
description = "Gen AI Compartment OCID"
154160
}
155161
variable "multimodal_model_name" {
156162
default = "openai.gpt-4.1-mini"
157163
}
158164
variable "multimodal_model_endpoint" {
159-
default = "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com"
165+
default = "https://inference.generativeai.us-ashburn-1.oci.oraclecloud.com"
160166
}
161167
variable "multimodal_max_output_token" {
162168
default = 8192
@@ -172,8 +178,9 @@ locals {
172178
app_subnet_id = (var.create_new_vcn ? oci_core_subnet.app_oci_core_subnet[0].id : var.existing_app_subnet_id)
173179
api_gw_subnet_id = (var.create_new_vcn ? oci_core_subnet.api_gw_oci_core_subnet[0].id : var.existing_api_gw_subnet_id)
174180

175-
image = "dsmc://ai-document-converter:0.1.0-dev.15"
176-
digest = "sha256:01bf5e53ea01377c63c42c1c30c12f4885de94b39e3a1b4edf5d195bfdfa0c9d"
181+
container_image = "iad.ocir.io/id1ytzpctjnn/dsmc/aisolution/ai_document_converter:0.1.0"
182+
image = "dsmc://ai_document_converter:0.1.0"
183+
digest = "sha256:73555609549a33bd5e06a1bc7b17c596067e72f0fb17babe054cf11152dbc060"
177184
model_desc = "Data Science Model for PDF to Markdown Converter Deployment"
178-
md_desc = "Deployment for PDF to Markdown Converter"
185+
md_desc = "Deployment for PDF to Markdown Converter"
179186
}

0 commit comments

Comments
 (0)