Setup und Ausführung trennen
Erfahren Sie, wie Sie das Agent-Setup und die Ausführung in der Produktion verwalten.
Gründe für den separaten Setup- und Run-Aufruf
Im 2. Schritt des Schnellstart-Beispiels werden agent.setup() und agent.run() in dasselbe Skript geschrieben und im selben Prozess ausgeführt. Diese Methode ist gut genug für eine schnelle "Hallo Welt".
In der Produktion können Sie diese Aufrufe jedoch in separate Abläufe einbetten.
Die Methode agent.setup() muss nur aufgerufen werden, wenn Aktualisierungen der Anweisungen oder Tools vorhanden sind. Beispiel: Sie können agent.setup() als Teil Ihrer CI/CD-Pipeline auslösen oder jedes Mal, wenn Ihr Kunde die Anweisungen oder Tools eines Agents aktualisiert, in Fällen, in denen Ihre Plattform kundenkonfigurierte Agents zulässt.
Auf der anderen Seite muss agent.run() ausgeführt werden, wenn Sie Anforderungen erhalten, die vom Agent verarbeitet werden sollen. Beispiel: Sie können die Ausführung als Teil einer Webanwendung oder eines Slack-Chatbots oder anderer Abläufe zur Verarbeitung von Anwendungsanforderungen für die Endbenutzer auslösen. Solche Abläufe sind in der Regel nicht Ihr Agent-Konfigurationsablauf.
Separater Aufruf beim Wiederverwenden von Code
Mit ADK können Sie agent.setup() und agent.run() separat in den entsprechenden Kontexten oder Abläufen aufrufen, während Sie dieselbe Agent-Definition verwenden. Beispiel:
Python
agent_def.py
# Shared agent definition component using ADK
# To be imported and used by agent_setup.py and agent_run.py
@tool
def get_weather(location: str) -> Dict[str, str]:
"""Get the weather for a given location"""
return {"location": location, "temperature": 72, "unit": "F"}
client = AgentClient(
auth_type="api_key",
profile="DEFAULT",
region="us-chicago-1",
)
weather_agent = Agent(
client=client,
agent_endpoint_id="YOUR_AGENT_ENDPOINT_ID",
instructions="You perform weather queries using tools.",
tools=[get_weather]
)
agent_setup.py
# The setup code
# Invoke when agent definition changes
from agent_def import weather_agent
weather_agent.setup()
agent_run.py
# The run code
# Invoke when there's a request to handle
from agent_def import weather_agent
input = "Is it cold in Seattle?"
response = agent.run(input)
response.pretty_print()
Java
WeatherAgentSetup.java
package demos.weather;
import com.oracle.bmc.ConfigFileReader;
import com.oracle.bmc.adk.agent.Agent;
import com.oracle.bmc.adk.client.AgentClient;
import com.oracle.bmc.adk.tools.Param;
import com.oracle.bmc.adk.tools.Tool;
import com.oracle.bmc.adk.tools.Toolkit;
import com.oracle.bmc.auth.BasicAuthenticationDetailsProvider;
import com.oracle.bmc.auth.SessionTokenAuthenticationDetailsProvider;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Collections;
public class WeatherAgentSetup {
public static class WeatherToolkit extends Toolkit {
/**
* Get the weather for a given location.
*
* @param location The location to get the weather for.
* @return A map containing the weather information.
*/
@Tool(name = "getWeather", description = "Get weather of a given location")
public static Map<String, String> getWeather(
@Param(description = "The location") String location) {
Map<String, String> weather = new HashMap<>();
weather.put("location", location);
weather.put("temperature", "72");
weather.put("unit", "F");
return weather;
}
}
public static Agent setupWeatherAgent() {
// Initialize the AgentClient
final String configLocation = "~/.oci/config";
final String configProfile = "DEFAULT";
BasicAuthenticationDetailsProvider authProvider =
new SessionTokenAuthenticationDetailsProvider(
ConfigFileReader.parse(configLocation, configProfile));
AgentClient agentClient = AgentClient.builder()
.authProvider(authProvider)
.region("us-chicago-1")
.build();
Agent weatherAgent = Agent.builder()
.client(agentClient)
.agentEndpointId("YOUR_AGENT_ENDPOINT_ID")
.instructions("You perform weather queries using tools.")
.tools(Arrays.asList(new WeatherToolkit()))
.build();
return weatherAgent;
}
}
WeatherAgentSetupRunner.java
package demos.weather;
public class WeatherAgentSetupRunner {
public static void main(String[] args) {
try {
// Create and set up the weather agent
WeatherAgentSetup.setupWeatherAgent().setup();
System.out.println("Weather agent setup completed.");
} catch (Exception e) {
System.err.println("Failed to set up the weather agent: " + e.getMessage());
e.printStackTrace();
}
}
}
WeatherAgentRun.java
package demos.weather;
import com.oracle.bmc.adk.agent.Agent;
import com.oracle.bmc.adk.utils.RunResponse;
public class WeatherAgentRun {
public static void main(String[] args) {
try {
// Create the agent instance
Agent weatherAgent = WeatherAgentSetup.setupWeatherAgent().setup();
// Input prompt
String input = "Is it cold in Seattle?";
// Run the agent with the input
RunResponse response = weatherAgent.run(input);
// Print the result
response.prettyPrint();
} catch (Exception e) {
System.err.println("Failed to run the weather agent: " + e.getMessage());
e.printStackTrace();
}
}
}