// This is an automatically generated code sample.
// To make this code sample work in your Oracle Cloud tenancy,
// please replace the values for any parameters whose current values do not fit
// your use case (such as resource IDs, strings containing ‘EXAMPLE’ or ‘unique_id’, and
// boolean, number, and enum parameters with values not fitting your use case).

package main

import (
	"context"
	"fmt"

	"github.com/oracle/oci-go-sdk/v65/common"
	"github.com/oracle/oci-go-sdk/v65/example/helpers"
	"github.com/oracle/oci-go-sdk/v65/generativeai"
)

func ExampleUpdateGenerativeAiProject() {
	// Create a default authentication provider that uses the DEFAULT
	// profile in the configuration file.
	// Refer to <see href="https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm#SDK_and_CLI_Configuration_File>the public documentation</see> on how to prepare a configuration file.
	client, err := generativeai.NewGenerativeAiClientWithConfigurationProvider(common.DefaultConfigProvider())
	helpers.FatalIfError(err)

	// Create a request and dependent object(s).

	req := generativeai.UpdateGenerativeAiProjectRequest{GenerativeAiProjectId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-generativeAiProjectId-Value"),
		IfMatch:      common.String("EXAMPLE-ifMatch-Value"),
		OpcRequestId: common.String("8QRCFQBANWEKTD8ZDVTY<unique_ID>"),
		UpdateGenerativeAiProjectDetails: generativeai.UpdateGenerativeAiProjectDetails{SandboxConfig: &generativeai.SandboxConfig{CredentialProfiles: []generativeai.SandboxCredentialProfile{generativeai.SandboxCredentialProfile{Label: common.String("EXAMPLE-label-Value"),
			CredentialInjectionRules: []generativeai.SandboxCredentialInjectionRule{generativeai.SandboxHttpHeaderCredentialInjectionRule{Host: common.String("EXAMPLE-host-Value"),
				InjectHeaders: []generativeai.SandboxCredentialInjectionHeader{generativeai.SandboxCredentialInjectionHeader{Name: common.String("EXAMPLE-name-Value"),
					Prefix:        common.String("EXAMPLE-prefix-Value"),
					VaultSecretId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-vaultSecretId-Value")}}}}}},
			IsEnabled:            common.Bool(true),
			IsPersistenceEnabled: common.Bool(true),
			SandboxOutboundNetworkingConfig: generativeai.CustomSandboxOutboundNetworkingConfig{NsgIds: []string{"EXAMPLE--Value"},
				SubnetId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-subnetId-Value")},
			WarmPoolConfig: &generativeai.SandboxWarmPoolConfig{LargeCount: common.Int(95),
				MediumCount: common.Int(331),
				SmallCount:  common.Int(866)}},
			ShortTermMemoryOptimizationConfig: &generativeai.ShortTermMemoryOptimizationConfig{CondenserConfig: &generativeai.CondenserConfig{LlmSelection: generativeai.GenAiModelLlmSelection{ModelId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-modelId-Value")}},
				IsEnabled: common.Bool(false)},
			ConversationConfig: &generativeai.ConversationConfig{ConversationsRetentionInHours: common.Int(33),
				ResponsesRetentionInHours: common.Int(611)},
			DefinedTags:  map[string]map[string]interface{}{"EXAMPLE_KEY_ZvsqD": map[string]interface{}{"EXAMPLE_KEY_3ynEk": "EXAMPLE--Value"}},
			Description:  common.String("EXAMPLE-description-Value"),
			DisplayName:  common.String("EXAMPLE-displayName-Value"),
			FreeformTags: map[string]string{"EXAMPLE_KEY_ArKyh": "EXAMPLE_VALUE_V9v8ygOxlvq5S4SLBf6K"},
			LongTermMemoryConfig: &generativeai.LongTermMemoryConfig{StandardLongTermMemoryStrategy: &generativeai.StandardLongTermMemoryStrategy{EmbeddingConfig: &generativeai.EmbeddingConfig{LlmSelection: generativeai.GenAiModelLlmSelection{ModelId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-modelId-Value")}},
				ExtractionConfig: &generativeai.ExtractionConfig{LlmSelection: generativeai.GenAiModelLlmSelection{ModelId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-modelId-Value")}},
				IsEnabled:        common.Bool(true)}}}}

	// Send the request using the service client
	resp, err := client.UpdateGenerativeAiProject(context.Background(), req)
	helpers.FatalIfError(err)

	// Retrieve value from the response.
	fmt.Println(resp)
}