기본 API 키 생성
현재 테스트를 위해 계정을 만들고 사용해도,
가지고 있는 API키가 없어서 테스트가 불가능해지는 경우가 많습니다.
그래서 사용자가 처음 가입을 하면,
체험용 API 키를 하나 제공하는 기능을 추가했습니다.
회원가입 CRUD 수정
def user_register(db : Session, email : str, pw : str, name : str, phone_number : str):
hashed_pw = hash_password(pw)
new_user = User(
email = email,
password=hashed_pw,
name = name,
role = 'user',
group = 'newUser',
register_at=datetime.utcnow(),
phone_number = phone_number
)
db.add(new_user)
db.commit()
db.refresh(new_user)
return new_user.id
회원가입이 완료된 후,
db.refresh()로 데이터베이스 내의 User 컬럼을 업데이트합니다.
업데이트 직후 생성된 사용자의 ID를 그대로 반환합니다.
기본 API 키 추가
def add_default_apikey(db : Session, user_id : int):
new_apikey = ApiKey(
api_key='Default API Key',
provider_id=2,
provider_name = 'Anthropic',
usage_limit = 500,
usage_count = 0,
user_id = user_id,
status = "Active"
)
db.add(new_apikey)
db.commit()
db.refresh(new_apikey)
return "success"
기본 API 키를 생성해주는 함수입니다.
기본 제공 키는 ‘Default API Key’라는 이름으로 표기됩니다.
엔드 포인트
@user_router.post('/register', response_model=RegisterResponse)
async def register(request: RegisterRequest, db: Session = Depends(get_db)):
email = request.email
password = request.password
name = request.name
phone_number = request.phone_number
try:
user_id = user_register(db, email = email, pw = password, name = name, phone_number = phone_number)
add_default_apikey(db = db, user_id = user_id)
return {"message": "Register Success"}
except Exception as e:
return JSONResponse(content={"error": str(e)}, status_code=500)
회원가입 직후에,
생성된 ID에 기본 API 키를 하나 추가해줍니다.
API 키 호출 함수
def get_api_key(db: Session, user_email: str, provider: str):
user = db.query(User).filter(User.email == user_email).first()
user_id = user.id
if provider == 'openai':
api = db.query(ApiKey).filter(ApiKey.user_id == user_id, ApiKey.provider_id==4).first()
if not api:
return None
return api.api_key
elif provider == "anthropic":
api = db.query(ApiKey).filter(ApiKey.user_id == user_id, ApiKey.provider_id==2).first()
if not api:
return None
elif api.api_key == 'Default API Key':
return config.DEFAULT_API_KEY
return api.api_key
API키가 호출될 때에도 ‘Default API Key’라는 값이 있으면,
Core.config에 저장된 기본 API 키 값을 제공합니다.
화면
