Supabase
Supabase
Supabase는 오픈소스 Firebase 대안이에요. Postgres 데이터베이스, 인증, 인스턴트 API, Edge Functions, Realtime 구독, 스토리지, 벡터 임베딩으로 프로젝트를 시작할 수 있어요.
출처: 문서
본문
Supabase는 오픈소스 Firebase 대안이에요. Postgres 데이터베이스, 인증, 인스턴트 API, Edge Functions, Realtime 구독, 스토리지, 벡터 임베딩으로 프로젝트를 시작할 수 있어요.
모든 LLM 프로바이더(OpenAI, Azure, Anthropic, Cohere, Replicate, PaLM)의 요청을 기록하고 총 지출을 확인하기
liteLLM은 success_callbacks와 failure_callbacks를 제공하여 응답 상태에 따라 특정 프로바이더로 데이터를 쉽게 보낼 수 있게 해 줘요. 이 경우 성공과 실패 두 시나리오 모두에서 요청을 Supabase로 기록하고 싶어요.
Supabase 테이블 생성 (Create a supabase table)
Supabase 프로젝트로 이동한 후 Supabase SQL Editor에서 이 구성으로 새 테이블을 만들어요.
참고: 테이블 이름은 변경할 수 있지만, 컬럼 이름은 변경하지 마세요.
create table
public.request_logs (
id bigint generated by default as identity,
created_at timestamp with time zone null default now(),
model text null default ''::text,
messages json null default '{}'::json,
response json null default '{}'::json,
end_user text null default ''::text,
status text null default ''::text,
error json null default '{}'::json,
response_time real null default '0'::real,
total_cost real null,
additional_details json null default '{}'::json,
litellm_call_id text unique,
primary key (id)
) tablespace pg_default;
콜백 사용 (Use Callbacks)
단 2줄의 코드로 모든 프로바이더의 비용을 확인하고 응답을 Supabase에 기록할 수 있어요:
litellm.success_callback=["supabase"]
litellm.failure_callback=["supabase"]
전체 코드
from litellm import completion
## set env variables
### SUPABASE
os.environ["SUPABASE_URL"] = "your-supabase-url"
os.environ["SUPABASE_KEY"] = "your-supabase-key"
## LLM API KEY
os.environ["OPENAI_API_KEY"] = ""
# set callbacks
litellm.success_callback=["supabase"]
litellm.failure_callback=["supabase"]
# openai call
response = completion(
model="gpt-5.6-luna",
messages=[{"role": "user", "content": "Hi 👋 - i'm openai"}],
user="ishaan22" # identify users
)
# bad call, expect this call to fail and get logged
response = completion(
model="chatgpt-test",
messages=[{"role": "user", "content": "Hi 👋 - i'm a bad call to test error logging"}]
)
추가 컨트롤 (Additional Controls)
엔드 유저 식별 (Identify end-user)
user를 litellm.completion에 전달해 LLM 호출을 엔드 유저에 매핑해요:
response = completion(
model="gpt-5.6-luna",
messages=[{"role": "user", "content": "Hi 👋 - i'm openai"}],
user="ishaan22" # identify users
)
다른 테이블 이름 (Different Table name)
테이블 이름을 수정했다면 새 이름을 전달하는 방법이에요:
litellm.modify_integration("supabase",{"table_name": "litellm_logs"})