Skip to content

Commit fbefeef

Browse files
Releasing version 2.152.0
Releasing version 2.152.0
2 parents 2262b80 + 1a1324c commit fbefeef

File tree

64 files changed

+3133
-651
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+3133
-651
lines changed

CHANGELOG.rst

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file.
44

55
The format is based on `Keep a Changelog <http://keepachangelog.com/>`_.
66

7+
====================
8+
2.152.0 - 2025-05-13
9+
====================
10+
11+
Added
12+
-----
13+
* Support for the Model Deployment service
14+
* Support for enabling and monitoring Pluggable Databases(PDB) in the Database Management service
15+
* Support for additional unit shapes in AI clusters in the Generative AI service
16+
* Support for node search details and node shape details on create and update cluster operations in the OpenSearch service
17+
18+
Breaking
19+
--------
20+
* Models `DisableExternalMysqlAssociatedServiceDetails` and `EnableExternalMysqlAssociatedServiceDetails` removed from the Database Management service
21+
* Property `lifecycle_state` removed from model `ExadataInfrastructureLifecycleStateValues` in the Database Management service
22+
* Operations `disable_external_mysql_associated_service` and `enable_external_mysql_associated_service` removed from `ManagedMySqlDatabasesClient` in the Database Management service
23+
* Default retries disabled for operations `get_named_credential` and `list_named_credentials` from `DbManagementClient` in the Database Management service
24+
* Operation `modify_external_container_database_management_feature` removed from `DbManagementClient` in the Database Management service
25+
726
====================
827
2.151.0 - 2025-05-06
928
====================

docs/api/database_management.rst

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,6 @@ Database Management
183183
oci.database_management.models.DisableAutonomousDatabaseManagementFeatureDetails
184184
oci.database_management.models.DisableDatabaseManagementFeatureDetails
185185
oci.database_management.models.DisableExternalContainerDatabaseManagementFeatureDetails
186-
oci.database_management.models.DisableExternalMysqlAssociatedServiceDetails
187186
oci.database_management.models.DisableExternalNonContainerDatabaseManagementFeatureDetails
188187
oci.database_management.models.DisableExternalPluggableDatabaseManagementFeatureDetails
189188
oci.database_management.models.DisableHighFrequencyAutomaticSpmEvolveAdvisorTaskDetails
@@ -214,7 +213,6 @@ Database Management
214213
oci.database_management.models.EnableExternalDbSystemDatabaseManagementDetails
215214
oci.database_management.models.EnableExternalDbSystemStackMonitoringDetails
216215
oci.database_management.models.EnableExternalExadataInfrastructureManagementDetails
217-
oci.database_management.models.EnableExternalMysqlAssociatedServiceDetails
218216
oci.database_management.models.EnableExternalNonContainerDatabaseManagementFeatureDetails
219217
oci.database_management.models.EnableExternalPluggableDatabaseManagementFeatureDetails
220218
oci.database_management.models.EnableHighFrequencyAutomaticSpmEvolveAdvisorTaskDetails

docs/api/database_management/models/oci.database_management.models.DisableExternalMysqlAssociatedServiceDetails.rst

Lines changed: 0 additions & 11 deletions
This file was deleted.

docs/api/database_management/models/oci.database_management.models.EnableExternalMysqlAssociatedServiceDetails.rst

Lines changed: 0 additions & 11 deletions
This file was deleted.

docs/api/landing.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ API Reference
153153
* :doc:`Media Services <media_services/client/oci.media_services.MediaServicesClient>`
154154
* :doc:`Media Stream <media_services/client/oci.media_services.MediaStreamClient>`
155155
* :doc:`Migration <cloud_migrations/client/oci.cloud_migrations.MigrationClient>`
156+
* :doc:`Model Deployment <model_deployment/client/oci.model_deployment.ModelDeploymentClient>`
156157
* :doc:`Monitoring <monitoring/client/oci.monitoring.MonitoringClient>`
157158
* :doc:`Mysqlaas <mysql/client/oci.mysql.MysqlaasClient>`
158159
* :doc:`Network Firewall <network_firewall/client/oci.network_firewall.NetworkFirewallClient>`
@@ -377,6 +378,7 @@ API Reference
377378
marketplace_publisher
378379
media_services
379380
mngdmac
381+
model_deployment
380382
monitoring
381383
mysql
382384
network_firewall

docs/api/model_deployment.rst

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
Model Deployment
2+
================
3+
4+
.. autosummary::
5+
:toctree: model_deployment/client
6+
:nosignatures:
7+
:template: autosummary/service_client.rst
8+
9+
oci.model_deployment.ModelDeploymentClient
10+
oci.model_deployment.ModelDeploymentClientCompositeOperations
11+
12+
--------
13+
Models
14+
--------
15+
16+
.. autosummary::
17+
:toctree: model_deployment/models
18+
:nosignatures:
19+
:template: autosummary/model_class.rst
20+
21+
oci.model_deployment.models.InferenceResult
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ModelDeploymentClient
2+
=====================
3+
4+
.. currentmodule:: oci.model_deployment
5+
6+
.. autoclass:: ModelDeploymentClient
7+
:special-members: __init__
8+
:members:
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ModelDeploymentClientCompositeOperations
2+
========================================
3+
4+
.. currentmodule:: oci.model_deployment
5+
6+
.. autoclass:: ModelDeploymentClientCompositeOperations
7+
:special-members: __init__
8+
:members:
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
InferenceResult
2+
===============
3+
4+
.. currentmodule:: oci.model_deployment.models
5+
6+
.. autoclass:: InferenceResult
7+
:show-inheritance:
8+
:special-members: __init__
9+
:members:
10+
:undoc-members:
11+
:inherited-members:

docs/api/opensearch.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ Opensearch
6464
oci.opensearch.models.RestoreOpensearchClusterDetails
6565
oci.opensearch.models.ReverseConnectionEndpoint
6666
oci.opensearch.models.SecuritySamlConfig
67+
oci.opensearch.models.ShapesDetails
6768
oci.opensearch.models.UpdateCheckinDetails
6869
oci.opensearch.models.UpdateClusterHardenedImageDetails
6970
oci.opensearch.models.UpdateClusterSpecsDetails
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
ShapesDetails
2+
=============
3+
4+
.. currentmodule:: oci.opensearch.models
5+
6+
.. autoclass:: ShapesDetails
7+
:show-inheritance:
8+
:special-members: __init__
9+
:members:
10+
:undoc-members:
11+
:inherited-members:

examples/adk/README.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# OCI Agent Development Kit (ADK)
2+
3+
OCI Agent Development Kit (ADK) is a client-side library that simplifies building agents on OCI Generative AI Agent Service, offering a developer experience (DX) comparable to other leading agent frameworks.
4+
5+
Alternatively, you can also use the `GenerativeAiAgentClient` and `GenerativeAiAgentRuntimeClient` to directly interact with OCI Agent Service, but the ADK addon within the OCI SDK provides a much simpler way to build agents, especially when implementing custom function tools and agent orchestration.
6+
7+
OCI Generative AI Agent Service official doc:
8+
9+
https://docs.oracle.com/en-us/iaas/Content/generative-ai-agents/home.htm
10+
11+
## Getting Started
12+
13+
### Prerequisites
14+
15+
- Python 3.10+
16+
17+
### Installation
18+
```bash
19+
pip install --upgrade "oci[adk]>=2.151.1"
20+
21+
```
22+
23+
### Authentication
24+
25+
The ADK provides a `AgentClient` class to handle authentication and management of agent resources.
26+
Four types of authentication are supported:
27+
- `api_key`: API key authentication, Default authentication method
28+
- `instance_principal`: Instance principal authentication, recommended for OCI compute instances
29+
- `security_token`: Security token authentication, internal auth method for OCI developers
30+
- `resource_principal`: Resource principals authentication, recommended for OCI resources
31+
32+
Most of the time, `api_key` is the best choice for authentication. Here is a doc on how to setup
33+
API key and OCI config:
34+
https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm
35+
36+
For more details, please refer to OCI official authentication doc: https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdk_authentication_methods.htm
37+
38+
Sample AgentClient initiation with API key and Default profile.
39+
The region is also required to automatically select the service endpoint.
40+
```python
41+
from oci.addons.adk import AgentClient
42+
43+
client = AgentClient(
44+
auth_type="api_key",
45+
profile="DEFAULT",
46+
region="us-chicago-1", # airport code is also valid, i.e. "ORD"
47+
)
48+
```
49+
50+
### Example
51+
```python
52+
from typing import Dict
53+
from oci.addons.adk import Agent, AgentClient, tool
54+
55+
"""
56+
This example shows an agent with a single function tool.
57+
"""
58+
59+
@tool
60+
def get_weather(location: str) -> Dict[str, str]:
61+
"""Get the weather for a given location"""
62+
return {"location": location, "temperature": 72, "unit": "F"}
63+
64+
65+
def main():
66+
67+
# Use a custom agent client for custom profile settings
68+
client = AgentClient(
69+
auth_type="api_key",
70+
profile="DEFAULT",
71+
region="us-chicago-1",
72+
)
73+
74+
# Instantiate the local agent object, with a single function tool (plain Python function)
75+
agent = Agent(
76+
client=client,
77+
agent_endpoint_id="YOUR_AGENT_ENDPOINT_ID",
78+
instructions="You are a helpful assistant that can perform weather queries.",
79+
tools=[get_weather]
80+
)
81+
82+
# Set up the agent once (which configures the instructions and tools in the remote agent resource)
83+
agent.setup()
84+
85+
# Run the agent with an input
86+
input = "Is it cold in Seattle?"
87+
response = agent.run(input)
88+
89+
# Should print like "It's not cold in Seattle. The current temperature is 72 degrees Fahrenheit. "
90+
response.pretty_print()
91+
92+
if __name__ == "__main__":
93+
main()
94+
```
95+
96+
## Examples Directory Overview
97+
98+
| Example | Description |
99+
|---------|-------------|
100+
| `single-agent-single-tool` | Minimal agent with single function tool |
101+
| `single-agent-multiple-tools` | Minimal agent with multiple function tools |
102+
| `multi-turn` | Minimal agent with multiple user turns |
103+
| `multi-agent` | Collaborative agents with workflow orchestration |
104+
| `deterministic-workflow` | Predictable execution patterns for business processes |
105+
| `lifecycle-hook` | Custom handlers for agent state transitions |
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# coding: utf-8
2+
# Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
3+
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
4+
5+
from oci.addons.adk import Toolkit, tool
6+
from typing import Dict, Any
7+
8+
9+
class ResearcherToolkit(Toolkit):
10+
11+
@tool
12+
def get_trending_keywords(self, topic: str) -> Dict[str, Any]:
13+
""" Get the trending keywords for a given topic.
14+
15+
Args:
16+
topic (str): The topic to get trending keywords for
17+
18+
Returns:
19+
str: A JSON string containing the trending keywords
20+
"""
21+
22+
if topic == "ai":
23+
return {"keywords": ["agent", "stargate", "openai", "oracle"]}
24+
25+
elif topic == "tiktok":
26+
return {"keywords": ["tiktok", "trump", "elon", "larry"]}
27+
28+
else:
29+
return {"keywords": ["oracle"]}
30+
31+
32+
class WriterToolkit(Toolkit):
33+
34+
@tool
35+
def email_user(self, blog_post: str, user_email: str) -> str:
36+
""" Email the writer with the blog post.
37+
38+
Args:
39+
blog_post (str): The blog post to email to the user
40+
user_email (str): The email address of the user to email the blog post to
41+
Returns:
42+
str: A message indicating that the email has been sent
43+
"""
44+
45+
return f"Email sent to user with blog post: {blog_post}"
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# coding: utf-8
2+
# Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
3+
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
4+
5+
from oci.addons.adk import Agent, AgentClient
6+
from custom_functon_tools import ResearcherToolkit, WriterToolkit
7+
8+
"""
9+
This examples shows how you can build "deterministically orchestrated workflows with agentic steps".
10+
"""
11+
12+
13+
# Your (existing) vanilla python code to be integrated into this agentic workflow
14+
def get_user_preferences():
15+
# Simulate result you fetched from DB
16+
return {
17+
"email": "[email protected]",
18+
"style": ["casual", "humorous"],
19+
"topics": ["ai"]
20+
}
21+
22+
23+
def main():
24+
25+
client = AgentClient(
26+
auth_type="security_token",
27+
profile="BoatOc1",
28+
region="kix"
29+
)
30+
31+
researcher = Agent(
32+
client=client,
33+
agent_endpoint_id="ocid1.genaiagentendpoint.oc1.ap-osaka-1.amaaaaaacqy6p4qaos",
34+
name="Researcher",
35+
instructions="You are a researcher. You research trending keywords based on the user preferences.",
36+
tools=[ResearcherToolkit()]
37+
)
38+
39+
writer = Agent(
40+
client=client,
41+
agent_endpoint_id="ocid1.genaiagentendpoint.oc1.ap-osaka-1.amaaaaaacqy6p4qaqa6",
42+
name="Writer",
43+
instructions="You are a writer. You write a blog post based on the trending keywords and the user preferences.",
44+
tools=[WriterToolkit()]
45+
)
46+
47+
researcher.setup()
48+
writer.setup()
49+
50+
# Step 1: fetch user preferences (non-agentic step), or any pre-processing
51+
user_preferences = get_user_preferences()
52+
53+
# Step 2: research trending keywords (agentic step), using outputs from previous steps as input
54+
topics = user_preferences['topics']
55+
researcher_prompt = f"Research trending keywords for the following topics: {topics}"
56+
last_run_response = researcher.run(researcher_prompt)
57+
58+
# Step 3: write a blog post (agentic step), using outputs from last two steps as input
59+
keywords = last_run_response.output
60+
style = user_preferences['style']
61+
email = user_preferences['email']
62+
writer_prompt = f"Write a 5 sentences blog post and email it to {email}. Use style: {style}. Blog post should be based on: {keywords}."
63+
last_run_response = writer.run(writer_prompt)
64+
65+
# Step 4: do whatever you want with the last step output, here we just print it
66+
last_run_response.pretty_print()
67+
68+
69+
if __name__ == "__main__":
70+
main()

0 commit comments

Comments
 (0)