Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -1357,7 +1357,7 @@ def load_model() -> LLM:
# CrewAI requires OPENAI_API_KEY env var (ignores api_key parameter)
os.environ["OPENAI_API_KEY"] = api_key
return LLM(
model="openai/gpt-4o",
model="openai/gpt-4.1",
api_key=api_key
)
{{/if}}
Expand Down Expand Up @@ -1397,7 +1397,7 @@ def load_model() -> LLM:
# CrewAI requires GEMINI_API_KEY env var (ignores api_key parameter)
os.environ["GEMINI_API_KEY"] = api_key
return LLM(
model="gemini/gemini-2.0-flash",
model="gemini/gemini-2.5-flash",
api_key=api_key
)
{{/if}}
Expand Down Expand Up @@ -1954,7 +1954,7 @@ def _get_api_key() -> str:
def load_model() -> ChatOpenAI:
"""Get authenticated OpenAI model client."""
return ChatOpenAI(
model="gpt-4o",
model="gpt-4.1",
api_key=_get_api_key()
)
{{/if}}
Expand Down Expand Up @@ -1991,7 +1991,7 @@ def _get_api_key() -> str:
def load_model() -> ChatGoogleGenerativeAI:
"""Get authenticated Gemini model client."""
return ChatGoogleGenerativeAI(
model="gemini-2.0-flash",
model="gemini-2.5-flash",
api_key=_get_api_key()
)
{{/if}}
Expand Down Expand Up @@ -2155,10 +2155,11 @@ async def main(query):
try:
async with mcp_server as server:
active_servers = [server] if server else []
# Currently defaults to GPT-4.1
# https://openai.github.io/openai-agents-python/models/
agent = Agent(
name="{{ name }}", mcp_servers=active_servers, tools=[add_numbers]
name="{{ name }}",
model="gpt-4.1",
mcp_servers=active_servers,
tools=[add_numbers]
)
result = await Runner.run(agent, query)
return result
Expand Down Expand Up @@ -2536,7 +2537,7 @@ def load_model() -> OpenAIModel:
"""Get authenticated OpenAI model client."""
return OpenAIModel(
client_args={"api_key": _get_api_key()},
model_id="gpt-4o",
model_id="gpt-4.1",
)
{{/if}}
{{#if (eq modelProvider "Gemini")}}
Expand Down Expand Up @@ -2574,7 +2575,7 @@ def load_model() -> GeminiModel:
"""Get authenticated Gemini model client."""
return GeminiModel(
client_args={"api_key": _get_api_key()},
model_id="gemini-2.0-flash",
model_id="gemini-2.5-flash",
)
{{/if}}
"
Expand Down
4 changes: 2 additions & 2 deletions src/assets/python/crewai/base/model/load.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def load_model() -> LLM:
# CrewAI requires OPENAI_API_KEY env var (ignores api_key parameter)
os.environ["OPENAI_API_KEY"] = api_key
return LLM(
model="openai/gpt-4o",
model="openai/gpt-4.1",
api_key=api_key
)
{{/if}}
Expand Down Expand Up @@ -127,7 +127,7 @@ def load_model() -> LLM:
# CrewAI requires GEMINI_API_KEY env var (ignores api_key parameter)
os.environ["GEMINI_API_KEY"] = api_key
return LLM(
model="gemini/gemini-2.0-flash",
model="gemini/gemini-2.5-flash",
api_key=api_key
)
{{/if}}
4 changes: 2 additions & 2 deletions src/assets/python/langchain_langgraph/base/model/load.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def _get_api_key() -> str:
def load_model() -> ChatOpenAI:
"""Get authenticated OpenAI model client."""
return ChatOpenAI(
model="gpt-4o",
model="gpt-4.1",
api_key=_get_api_key()
)
{{/if}}
Expand Down Expand Up @@ -117,7 +117,7 @@ def _get_api_key() -> str:
def load_model() -> ChatGoogleGenerativeAI:
"""Get authenticated Gemini model client."""
return ChatGoogleGenerativeAI(
model="gemini-2.0-flash",
model="gemini-2.5-flash",
api_key=_get_api_key()
)
{{/if}}
7 changes: 4 additions & 3 deletions src/assets/python/openaiagents/base/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,11 @@ async def main(query):
try:
async with mcp_server as server:
active_servers = [server] if server else []
# Currently defaults to GPT-4.1
# https://openai.github.io/openai-agents-python/models/
agent = Agent(
name="{{ name }}", mcp_servers=active_servers, tools=[add_numbers]
name="{{ name }}",
model="gpt-4.1",
mcp_servers=active_servers,
tools=[add_numbers]
)
result = await Runner.run(agent, query)
return result
Expand Down
4 changes: 2 additions & 2 deletions src/assets/python/strands/base/model/load.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def load_model() -> OpenAIModel:
"""Get authenticated OpenAI model client."""
return OpenAIModel(
client_args={"api_key": _get_api_key()},
model_id="gpt-4o",
model_id="gpt-4.1",
)
{{/if}}
{{#if (eq modelProvider "Gemini")}}
Expand Down Expand Up @@ -118,6 +118,6 @@ def load_model() -> GeminiModel:
"""Get authenticated Gemini model client."""
return GeminiModel(
client_args={"api_key": _get_api_key()},
model_id="gemini-2.0-flash",
model_id="gemini-2.5-flash",
)
{{/if}}
12 changes: 12 additions & 0 deletions src/cli/commands/dev/command.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,22 @@ export const registerDev = (program: Command) => {

// Determine which agent/port to invoke
let invokePort = port;
let targetAgent = invokeProject?.agents[0];
if (opts.agent && invokeProject) {
invokePort = getAgentPort(invokeProject, opts.agent, port);
targetAgent = invokeProject.agents.find(a => a.name === opts.agent);
} else if (invokeProject && invokeProject.agents.length > 1 && !opts.agent) {
const names = invokeProject.agents.map(a => a.name).join(', ');
console.error(`Error: Multiple agents found. Use --agent to specify which one.`);
console.error(`Available: ${names}`);
process.exit(1);
}

// Show model info if available
if (targetAgent?.modelProvider) {
console.log(`Provider: ${targetAgent.modelProvider}`);
}

await invokeDevServer(invokePort, opts.invoke, opts.stream ?? false);
return;
}
Expand Down Expand Up @@ -129,8 +136,13 @@ export const registerDev = (program: Command) => {
console.log(`Port ${basePort} in use, using ${actualPort}`);
}

// Get provider info from agent config
const targetAgent = project.agents.find(a => a.name === config.agentName);
const providerInfo = targetAgent?.modelProvider ?? '(see agent code)';

console.log(`Starting dev server...`);
console.log(`Agent: ${config.agentName}`);
console.log(`Provider: ${providerInfo}`);
console.log(`Server: http://localhost:${actualPort}/invocations`);
console.log(`Log: ${logger.getRelativeLogPath()}`);
console.log(`Press Ctrl+C to stop\n`);
Expand Down
5 changes: 5 additions & 0 deletions src/cli/commands/invoke/action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ export async function handleInvoke(context: InvokeContext, options: InvokeOption
return { success: false, error: 'No prompt provided. Usage: agentcore invoke "your prompt"' };
}

// Get provider info if available
const providerInfo = agentSpec.modelProvider;

// Create logger for this invocation
const logger = new InvokeLogger({
agentName: agentSpec.name,
Expand Down Expand Up @@ -113,6 +116,7 @@ export async function handleInvoke(context: InvokeContext, options: InvokeOption
targetName: selectedTargetName,
response: fullResponse,
logFilePath: logger.logFilePath,
providerInfo,
};
} catch (err) {
logger.logError(err, 'invoke streaming failed');
Expand All @@ -136,5 +140,6 @@ export async function handleInvoke(context: InvokeContext, options: InvokeOption
targetName: selectedTargetName,
response: response.content,
logFilePath: logger.logFilePath,
providerInfo,
};
}
5 changes: 4 additions & 1 deletion src/cli/commands/invoke/command.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,10 @@ async function handleInvokeCLI(options: InvokeOptions): Promise<void> {
console.error(`\nLog: ${result.logFilePath}`);
}
} else {
// Non-streaming, non-json: print response or error
// Non-streaming, non-json: print provider info and response or error
if (result.providerInfo) {
console.error(`Provider: ${result.providerInfo}`);
}
if (result.success && result.response) {
console.log(result.response);
} else if (!result.success && result.error) {
Expand Down
2 changes: 2 additions & 0 deletions src/cli/commands/invoke/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,6 @@ export interface InvokeResult {
response?: string;
error?: string;
logFilePath?: string;
/** Model provider (e.g., "Anthropic", "Bedrock") */
providerInfo?: string;
}
1 change: 1 addition & 0 deletions src/cli/operations/agent/generate/schema-mapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ export function mapGenerateConfigToAgent(config: GenerateConfig): AgentEnvSpec {
codeLocation: codeLocation as DirectoryPath,
runtimeVersion: DEFAULT_PYTHON_VERSION,
networkMode: DEFAULT_NETWORK_MODE,
modelProvider: config.modelProvider,
};
}

Expand Down
1 change: 1 addition & 0 deletions src/cli/tui/hooks/useDevServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -248,5 +248,6 @@ export function useDevServer(options: { workingDir: string; port: number; agentN
stop,
logFilePath: loggerRef.current?.getRelativeLogPath(),
hasMemory: (project?.memories?.length ?? 0) > 0,
modelProvider: project?.agents.find(a => a.name === config?.agentName)?.modelProvider,
};
}
6 changes: 6 additions & 0 deletions src/cli/tui/screens/add/AddFlow.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { DEFAULT_MODEL_IDS } from '../../../../schema';
import { computeDefaultCredentialEnvVarName } from '../../../operations/identity/create-identity';
import { ErrorPrompt } from '../../components';
import { useAvailableAgents } from '../../hooks/useCreateMcp';
Expand Down Expand Up @@ -101,6 +102,11 @@ function AgentAddedSummary({
</Text>
)}
</Box>
<Box marginTop={1}>
<Text dimColor>Model: </Text>
<Text>{DEFAULT_MODEL_IDS[config.modelProvider]}</Text>
<Text dimColor> via {config.modelProvider}</Text>
</Box>
{showEnvVarReminder && envVarName && (
<Box flexDirection="column" marginTop={1}>
<Text color="yellow">Note: API key not configured.</Text>
Expand Down
7 changes: 5 additions & 2 deletions src/cli/tui/screens/agent/AddAgentScreen.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { APP_DIR, ConfigIO } from '../../../../lib';
import type { ModelProvider } from '../../../../schema';
import { AgentNameSchema } from '../../../../schema';
import { AgentNameSchema, DEFAULT_MODEL_IDS } from '../../../../schema';
import { computeDefaultCredentialEnvVarName } from '../../../operations/identity/create-identity';
import {
ApiKeySecretInput,
Expand Down Expand Up @@ -398,7 +398,10 @@ export function AddAgentScreen({ existingAgentNames, onComplete, onExit }: AddAg
{ label: 'Type', value: 'Bring my own code' },
{ label: 'Code Location', value: byoConfig.codeLocation },
{ label: 'Entrypoint', value: byoConfig.entrypoint },
{ label: 'Model Provider', value: byoConfig.modelProvider },
{
label: 'Model Provider',
value: `${byoConfig.modelProvider} (${DEFAULT_MODEL_IDS[byoConfig.modelProvider]})`,
},
...(byoConfig.modelProvider !== 'Bedrock'
? [
{
Expand Down
14 changes: 9 additions & 5 deletions src/cli/tui/screens/agent/types.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ModelProvider, PythonRuntime, SDKFramework, TargetLanguage } from '../../../../schema';
import { getSupportedModelProviders } from '../../../../schema';
import { DEFAULT_MODEL_IDS, getSupportedModelProviders } from '../../../../schema';
import type { MemoryOption } from '../generate/types';

// ─────────────────────────────────────────────────────────────────────────────
Expand Down Expand Up @@ -89,10 +89,14 @@ export const FRAMEWORK_OPTIONS = [
] as const;

export const MODEL_PROVIDER_OPTIONS = [
{ id: 'Bedrock', title: 'Amazon Bedrock', description: 'AWS managed model inference' },
{ id: 'Anthropic', title: 'Anthropic', description: 'Claude models via Anthropic API' },
{ id: 'OpenAI', title: 'OpenAI', description: 'GPT models via OpenAI API' },
{ id: 'Gemini', title: 'Google Gemini', description: 'Gemini models via Google API' },
{ id: 'Bedrock', title: `Amazon Bedrock (${DEFAULT_MODEL_IDS.Bedrock})`, description: 'AWS managed model inference' },
{
id: 'Anthropic',
title: `Anthropic (${DEFAULT_MODEL_IDS.Anthropic})`,
description: 'Claude models via Anthropic API',
},
{ id: 'OpenAI', title: `OpenAI (${DEFAULT_MODEL_IDS.OpenAI})`, description: 'GPT models via OpenAI API' },
{ id: 'Gemini', title: `Google Gemini (${DEFAULT_MODEL_IDS.Gemini})`, description: 'Gemini models via Google API' },
] as const;

/**
Expand Down
12 changes: 11 additions & 1 deletion src/cli/tui/screens/create/CreateScreen.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ProjectNameSchema } from '../../../../schema';
import { DEFAULT_MODEL_IDS, ProjectNameSchema } from '../../../../schema';
import { validateFolderNotExists } from '../../../commands/create/validate';
import { computeDefaultCredentialEnvVarName } from '../../../operations/identity/create-identity';
import {
Expand Down Expand Up @@ -48,11 +48,14 @@ function buildExitMessage(projectName: string, steps: Step[], agentConfig: AddAg
if (agentConfig?.agentType === 'create') {
const frameworkOption = FRAMEWORK_OPTIONS.find(o => o.id === agentConfig.framework);
const frameworkLabel = frameworkOption?.title ?? agentConfig.framework;
const modelName = DEFAULT_MODEL_IDS[agentConfig.modelProvider];
const agentPath = `app/${agentConfig.name}/`;
const agentcorePath = 'agentcore/';
const maxPathLen = Math.max(agentPath.length, agentcorePath.length);
lines.push(` ${agentPath.padEnd(maxPathLen)} \x1b[2m${agentConfig.language} agent (${frameworkLabel})\x1b[0m`);
lines.push(` ${agentcorePath.padEnd(maxPathLen)} \x1b[2mConfig and CDK project\x1b[0m`);
lines.push('');
lines.push(`\x1b[2mModel:\x1b[0m ${modelName} \x1b[2mvia ${agentConfig.modelProvider}\x1b[0m`);
} else if (agentConfig?.agentType === 'byo') {
const agentPath = agentConfig.codeLocation;
const agentcorePath = 'agentcore/';
Expand Down Expand Up @@ -169,6 +172,13 @@ function CreatedSummary({ projectName, agentConfig }: { projectName: string; age
</Text>
</Box>
</Box>
{isCreate && agentConfig && (
<Box marginTop={1}>
<Text dimColor>Model: </Text>
<Text>{DEFAULT_MODEL_IDS[agentConfig.modelProvider]}</Text>
<Text dimColor> via {agentConfig.modelProvider}</Text>
</Box>
)}
{isByo && agentConfig && (
<Box flexDirection="column" marginTop={1}>
<Text color="yellow">
Expand Down
7 changes: 7 additions & 0 deletions src/cli/tui/screens/dev/DevScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ export function DevScreen(props: DevScreenProps) {
stop,
logFilePath,
hasMemory,
modelProvider,
} = useDevServer({
workingDir,
port: props.port ?? 8080,
Expand Down Expand Up @@ -383,6 +384,12 @@ export function DevScreen(props: DevScreenProps) {
<Text>Agent: </Text>
<Text color="green">{config?.agentName}</Text>
</Box>
{modelProvider && (
<Box>
<Text>Provider: </Text>
<Text color="green">{modelProvider}</Text>
</Box>
)}
<Box>
<Text>Server: </Text>
<Text color="cyan">http://localhost:{actualPort}/invocations</Text>
Expand Down
6 changes: 4 additions & 2 deletions src/cli/tui/screens/generate/GenerateWizardUI.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ModelProvider } from '../../../../schema';
import { ProjectNameSchema } from '../../../../schema';
import { DEFAULT_MODEL_IDS, ProjectNameSchema } from '../../../../schema';
import { computeDefaultCredentialEnvVarName } from '../../../operations/identity/create-identity';
import { ApiKeySecretInput, Panel, SelectList, StepIndicator, TextInput } from '../../components';
import type { SelectableItem } from '../../components';
Expand Down Expand Up @@ -202,7 +202,9 @@ function ConfirmView({ config, credentialProjectName }: { config: GenerateConfig
</Text>
<Text>
<Text dimColor>Model Provider: </Text>
<Text>{config.modelProvider}</Text>
<Text>
{config.modelProvider} ({DEFAULT_MODEL_IDS[config.modelProvider]})
</Text>
</Text>
{config.modelProvider !== 'Bedrock' && (
<Text>
Expand Down
14 changes: 9 additions & 5 deletions src/cli/tui/screens/generate/types.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ModelProvider, SDKFramework, TargetLanguage } from '../../../../schema';
import { getSupportedModelProviders } from '../../../../schema';
import { DEFAULT_MODEL_IDS, getSupportedModelProviders } from '../../../../schema';

export type GenerateStep = 'projectName' | 'language' | 'sdk' | 'modelProvider' | 'apiKey' | 'memory' | 'confirm';

Expand Down Expand Up @@ -51,10 +51,14 @@ export const SDK_OPTIONS = [
] as const;

export const MODEL_PROVIDER_OPTIONS = [
{ id: 'Bedrock', title: 'Amazon Bedrock', description: 'AWS managed model inference' },
{ id: 'Anthropic', title: 'Anthropic', description: 'Claude models via Anthropic API' },
{ id: 'OpenAI', title: 'OpenAI', description: 'GPT models via OpenAI API' },
{ id: 'Gemini', title: 'Google Gemini', description: 'Gemini models via Google API' },
{ id: 'Bedrock', title: `Amazon Bedrock (${DEFAULT_MODEL_IDS.Bedrock})`, description: 'AWS managed model inference' },
{
id: 'Anthropic',
title: `Anthropic (${DEFAULT_MODEL_IDS.Anthropic})`,
description: 'Claude models via Anthropic API',
},
{ id: 'OpenAI', title: `OpenAI (${DEFAULT_MODEL_IDS.OpenAI})`, description: 'GPT models via OpenAI API' },
{ id: 'Gemini', title: `Google Gemini (${DEFAULT_MODEL_IDS.Gemini})`, description: 'Gemini models via Google API' },
] as const;

/**
Expand Down
Loading
Loading