user(); $projectsQuery = PromptProject::with(['provider', 'model'])->latest(); if (!$user || $user->role !== 'superadmin') { $projectsQuery->where('user_id', $user->id); } $projects = $projectsQuery->get(); $providers = AiProvider::where('is_active', true) ->orderBy('name') ->get(); $defaultProviderId = 1; $defaultModelId = 11; return view('ai-agent.index', compact('projects', 'providers', 'defaultProviderId', 'defaultModelId')); } public function execute(Request $request): RedirectResponse { $request->validate([ 'project_id' => 'nullable|exists:prompt_projects,id', 'prompt_text' => 'required|string', 'provider_id' => 'required|exists:ai_providers,id', 'model_id' => 'required|exists:ai_models,id', 'temperature' => 'nullable|numeric|min:0|max:1', 'max_tokens' => 'nullable|integer|min:1|max:128000', ]); $provider = AiProvider::where('id', $request->provider_id) ->where('is_active', true) ->firstOrFail(); $model = AiModel::where('id', $request->model_id) ->where('provider_id', $provider->id) ->where('is_active', true) ->firstOrFail(); $result = $this->aiAgentService->execute( prompt: $request->prompt_text, provider: $provider, model: $model, temperature: (float) ($request->temperature ?? 0.7), maxTokens: (int) ($request->max_tokens ?? 1024), ); return redirect()->route('ai-agent.index') ->with('success', 'Execução concluída com sucesso.') ->with('agent_result', $result) ->withInput([ 'project_id' => $request->project_id, 'prompt_text' => $request->prompt_text, 'provider_id' => $request->provider_id, 'model_id' => $request->model_id, 'temperature' => $request->temperature, 'max_tokens' => $request->max_tokens, ]); } public function getModels(Request $request) { $request->validate([ 'provider_id' => 'required|exists:ai_providers,id', ]); $models = AiModel::where('provider_id', $request->provider_id) ->where('is_active', true) ->orderBy('name') ->get(['id', 'name', 'slug']); return response()->json($models); } }