🌱 API Key 없는 AI 생태계를 꿈꾸며
Gpters 안에서는 매일매일 새로운 AI 서비스들이 쏟아져 나옵니다.
하지만 아이러니하게도, 그렇게 만든 서비스들이 막상 공유되지 못하는 문제에 자주 부딪히곤 했어요.
“API 키가 없어서 테스트 못 해요”
“키 노출되면 어떡하죠?”
“유료 과금될까 봐 못 써요”
이런 얘기들이 점점 쌓이면서, 저희는 이렇게 생각했어요.
“우리가 키를 안 써도 AI를 부를 수 있으면 어떨까?” 🤔
🔐 고민의 시작 – Key를 어디에 두지?
처음에는 단순하게 "그냥 DB에 넣어두면 되지 않을까?"라고 생각했어요.
하지만 금방 문제가 드러났죠.
보안 이슈: DB에 키를 저장하는 건 해킹이 두려워요. 여러가지 보안 솔루션을 도입하려하니 너무 어려워졌어요.
클라이언트 쪽 저장: websocket으로 통신하면서 jwt를 처리하려고 하니, 아키텍처가 너무 복잡해졌어요.
그래서 결국 핵심 원칙을 세웠습니다.
✅ "유저는 인증만 하면 되고, 키는 안전하게 서버 쪽에서 관리하자!"
🛠️ 그래서 만든 구조 – LLM API 게이트웨이
서비스 구조는 이렇게 간단하게 만들었어요:
[클라이언트] → jwt 포함 요청
↓
[게이트웨이]
- jwt 검증
- user_id → API Key 매핑
- OpenAI API 호출
↓
[결과 반환 + 사용량 로깅]
유저는 그냥 GatewayLLM이라는 래퍼를 호출하면 끝!
LangChain에서도 기존 코드를 거의 그대로 두고, 이 래퍼만 바꿔주면 됩니다.
from langchain.llms import GatewayLLM
llm = GatewayLLM(
jwt="<유저_JWT>",
provider="openai",
model="gpt-3.5-turbo",
endpoint="https://example.com/gateway/llm"
)
✨ 핵심은 OpenAI API Key를 유저가 직접 소유하지 않아도,
안전하고 간단하게 사용할 수 있게 만든 구조라는 점이에요.
~/ai_gateway$ python scripts/generate_token.py user1
Generated JWT token for user user1:
eyJhbGc생략:
~/ai_gateway$ curl -X POST "http://localhost:8001/api/v1/llm" -H "Content-Type: application/json" -d '{"jwt": "eyJhbGc생략", "provider": "openai", "model": "gpt-3.5-turbo", "prompt": "안녕하세요, 당신은 누구인가요?", "temperature": 0.7, "max_tokens": 100}'
{"id":"chatcmpl-BKOognbSsMChgbSJsHnYt4O8lIfhh","object":"chat.completion","created":1744201654,"model":"gpt-3.5-turbo-0125","choices":[{"text":"안녕하세요, 저는 인공지능 챗봇입니다. 무엇을 도와드릴까요?","index":0,"finish_reason":"stop"}],"usage":{"prompt_tokens":25,"completion_tokens":37,"total_tokens":62}}
~/ai_gateway$ python scripts/generate_token.py user2
Generated JWT token for user user2:
eyJhbGc생략
~/ai_gateway$ curl -X POST "http://localhost:8001/api/v1/llm" -H "Content-Type: application/json" -d '{"jwt": "eyJhbGc생략", "provider": "openai", "model": "gpt-3.5-turbo", "prompt": "안녕하세요, 당신은 누구인가요?", "temperature": 0.7, "max_tokens": 100}'
{"detail":"Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-yyyyy***********************yyyy. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}"}⚠️ 만들면서 겪은 시행착오
문제는 보안이었습니다. 키를 어디다가 저장할 것인가가 매우 중요한 논점이었어요.
- 안전하게 클라이언트에 보관하자니 구조가 끝도 없이 복잡해지고,
- 서버에 보관하자니 해킹이 걱정됩니다.
- JWT를 사용하자니 결국 OAuth를 "구현" 해야하는 문제가 생겼어요.
🧩 결과와 앞으로
지금은 Gpters 내부 멤버들이 자유롭게 LLM 기능을 붙여
자신만의 AI 앱을 만들고 공유할 수 있는 구조로 디벨롭할 예정이에요.
AI 서비스를 누구나 쉽게 만들고, 누구나 쉽게 쓸 수 있도록 말이죠.
그리고 곧, 이 게이트웨이를 오픈할 계획입니다.
Admin 기능, 과금 연동, 대시보드 등도 차근차근 확장 중이에요.
💬 마무리 한 마디
AI는 결국, 누구나 쓸 수 있어야 진짜 혁신이 이뤄진다고 믿어요.
이번 게이트웨이는 그 출발점이 될 수 있을 거라 기대하고 있습니다.
🚀 여러분도 이제 Key 걱정 없이,
LangChain에 바로 LLM 기능 붙여보세요.
복잡한 설정 없이, 이 서비스 하나면 끝! 🎯
서비스 이름 추천해주세요!