Claude API dari Anthropic adalah salah satu AI model paling powerful saat ini, dan kabar baiknya — integrasi ke Laravel sangat straightforward. Kamu cuma perlu HTTP Client bawaan Laravel dan API key dari Anthropic, lalu kamu sudah bisa mengirim request ke Claude.
Di artikel ini, kita akan setup dari nol, membuat helper function yang rapi, dan menjalankan contoh kasus nyata yang bisa langsung kamu pakai di project.
1. Setup dan Persiapan Awal
Langkah pertama, daftar di console.anthropic.com dan buat API key baru. Simpan key tersebut di file .env kamu:
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxPastikan Laravel project kamu minimal versi 9 (untuk fitur HTTP Client yang lengkap). Verifikasi dengan command:
php artisan --versionHTTP Client sudah built-in di Laravel, jadi kamu tidak perlu install package tambahan. Sekarang kita buat service class untuk handle komunikasi dengan Claude API.
2. Membuat Claude Service Class
Buat file baru di app/Services/ClaudeService.php:
<?php
namespace App\Services;
use Illuminate\Support\Facades\Http;
class ClaudeService
{
private string $apiKey;
private string $baseUrl = 'https://api.anthropic.com/v1/messages';
private string $model = 'claude-3-5-sonnet-20241022';
public function __construct()
{
$this->apiKey = config('services.anthropic.api_key');
}
public function chat(string $message): string
{
$response = Http::withHeaders([
'x-api-key' => $this->apiKey,
'anthropic-version' => '2023-06-01',
'content-type' => 'application/json',
])->post($this->baseUrl, [
'model' => $this->model,
'max_tokens' => 1024,
'messages' => [
[
'role' => 'user',
'content' => $message,
]
],
]);
if ($response->failed()) {
throw new \Exception('Claude API error: ' . $response->body());
}
return $response->json('content.0.text');
}
}Kita juga perlu update config/services.php untuk store API key dengan aman:
'anthropic' => [
'api_key' => env('ANTHROPIC_API_KEY'),
],3. Membuat Controller untuk Handle Request
Buat controller sederhana yang memanfaatkan service kita:
<?php
namespace App\Http\Controllers;
use App\Services\ClaudeService;
use Illuminate\Http\Request;
class ChatController extends Controller
{
public function __construct(private ClaudeService $claudeService) {}
public function ask(Request $request)
{
$validated = $request->validate([
'question' => 'required|string|max:1000',
]);
try {
$response = $this->claudeService->chat($validated['question']);
return response()->json([
'success' => true,
'answer' => $response,
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'error' => $e->getMessage(),
], 500);
}
}
}4. Setup Route dan Testing
Tambahkan route di routes/api.php:
Route::post('/chat', [ChatController::class, 'ask']);Kamu bisa test menggunakan Postman atau curl:
curl -X POST http://localhost:8000/api/chat \n -H "Content-Type: application/json" \n -d '{"question": "Apa itu Laravel?"}'Jika semuanya setup dengan benar, kamu akan menerima response berisi jawaban dari Claude API.
5. Best Practice dan Tips Penting
- Rate Limiting: Anthropic memiliki rate limit untuk free tier. Implementasikan caching atau queue untuk mengurangi request berlebihan.
- Error Handling: Selalu tangkap exception dan berikan feedback yang jelas ke user, jangan leak error message produksi.
- Model Selection: Dokumentasi Anthropic menunjukkan berbagai model dengan trade-off kecepatan vs akurasi. Pilih sesuai use case kamu.
- Timeout Setting: Set timeout yang sesuai untuk request HTTP karena Claude API bisa memakan waktu beberapa detik:
Http::timeout(30) - Cost Monitoring: Monitor usage kamu di console Anthropic untuk menghindari bill yang mengejutkan.
6. Contoh Use Case: Content Generator
Contoh nyata menggunakan Claude untuk generate artikel blog:
public function generateArticle(Request $request)
{
$topic = $request->input('topic');
$prompt = "Generate a professional blog article about: {$topic}.
Format with markdown. Include introduction, 3 main sections, and conclusion.";
$content = $this->claudeService->chat($prompt);
return response()->json([
'content' => $content,
'topic' => $topic,
]);
}Feature seperti ini sangat berguna untuk MVP atau prototyping cepat sebelum kamu menambah fitur lebih kompleks.
Kesimpulan
Integrasi Claude API ke Laravel terbukang sangat mudah — cuma butuh HTTP Client, API key, dan struktur service yang baik. Dari sini, kamu bisa expand ke fitur lebih advanced seperti streaming response, conversation history, atau embedding untuk semantic search.
Jangan lupa selalu check dokumentasi Anthropic terbaru untuk update model atau API changes. Selamat eksperimen, dan semoga artikel ini membantu kamu memulai perjalanan AI-powered app di Laravel!