설치 전에 유료 API 키가 필요한지 확인하는 법
2026-10-09 마지막 수정
「무료 오픈소스 AI 도구」를 받아 설치까지 마쳤는데, 처음 실행한 화면이 API 키를 달라고 하는 일이 흔합니다. 오픈소스는 코드를 공개한다는 뜻이지 쓰는 데 돈이 들지 않는다는 뜻이 아니어서 그렇습니다. 이 글은 설치하기 전에 저장소 페이지만 보고 유료 API 가 필요한지 확인하는 순서를 정리합니다. 예시는 모두 실제 저장소의 커밋에 고정된 줄입니다.
1. 설정 예시 파일부터 연다
키가 필요한 도구는 대개 저장소 맨 위에 설정 예시 파일을 둡니다. 이름은 .env.example, .env.sample, config.example.yaml, settings.example.json 같은 모양입니다. 이 파일에서 _API_KEY, _TOKEN, _SECRET 으로 끝나는 이름을 찾으면, 이 도구가 어떤 서비스에 기대는지 대부분 보입니다.
다만 키 이름이 많다고 전부 필요한 것은 아닙니다. TauricResearch/TradingAgents 의 .env.example 1~17번째 줄에는 OpenAI·Google·Anthropic·DeepSeek·Groq 등 공급자 키가 16개 있지만, 첫 줄 주석은 「쓰는 것 하나만 채우라」고 말합니다. 같은 파일 30~39번째 줄에는 vLLM·LM Studio·llama.cpp 같은 로컬 서버를 쓰는 설정과, Ollama 주소를 비워 두면 내 컴퓨터(localhost:11434)로 간다는 주석이 있습니다. 이 파일만 읽어도 「클라우드 키 하나가 있거나, 로컬 모델을 띄우면 된다」는 답이 나옵니다.
그래서 이 파일은 키 이름보다 주석을 먼저 읽는 편이 낫습니다. 「하나만」「선택」「optional」「local」 같은 말이 붙어 있는지가 필요한 키의 수를 정합니다.
2. 의존성 목록에서 공급자 SDK 를 찾는다
설정 예시 파일이 없으면 의존성 목록을 봅니다. Python 은 requirements.txt·pyproject.toml, JavaScript·TypeScript 는 package.json, Go 는 go.mod, Rust 는 Cargo.toml 입니다. 아래 이름이 보이면 그 공급자의 API 를 부르는 코드가 있을 가능성이 큽니다.
| 공급자 | Python | JavaScript·TypeScript |
|---|---|---|
| OpenAI | openai, langchain-openai | openai, @ai-sdk/openai |
| Anthropic | anthropic, langchain-anthropic | @anthropic-ai/sdk, @ai-sdk/anthropic |
| Google Gemini | google-genai, langchain-google-genai | @google/genai, @ai-sdk/google |
| 여러 공급자를 한 번에 | litellm | ai (Vercel AI SDK) |
여기서도 두 가지를 조심해야 합니다. 첫째, 의존성에 있다고 다 부르는 것은 아닙니다. TradingAgents 의 pyproject.toml 13~15번째 줄은 Anthropic·Google·OpenAI 용 라이브러리를 모두 기본 의존성으로 설치하지만, 실제로 부르는 것은 설정에서 고른 공급자 하나입니다. litellm 처럼 여러 공급자를 묶은 라이브러리가 보이면, 어느 공급자로 갈지는 설정이 정합니다. 둘째, 의존성에 없다고 안 부르는 것도 아닙니다. SDK 없이 requests 나 fetch 로 API 주소를 직접 부르는 코드도 흔합니다. 그래서 다음 단계가 필요합니다.
3. 코드에서 주소와 설정 이름을 검색한다
GitHub 저장소 페이지에서 로그인한 상태로 / 를 누르면 그 저장소 안의 코드를 검색할 수 있습니다. 다음 말을 차례로 넣어 봅니다.
- API 주소:
api.openai.com,api.anthropic.com,generativelanguage.googleapis.com,openrouter.ai - 키 이름:
OPENAI_API_KEY,ANTHROPIC_API_KEY,GEMINI_API_KEY - 주소를 바꾸는 설정:
base_url,baseURL,api_base,BASE_URL - 로컬 실행기 주소:
localhost:11434(Ollama),localhost:1234(LM Studio)
검색에 걸린 파일이 어디에 있는지도 봅니다. tests/, examples/, docs/ 아래에만 나온다면 도구 본체는 그 API 를 부르지 않을 수 있습니다. 반대로 주소 설정과 로컬 주소가 같이 나온다면, 그 호출은 로컬 모델로 돌릴 수 있습니다(코드 한 줄로 로컬로).
4. README 는 무엇을 확인하는 데 쓰나
README 의 「Requirements」「Prerequisites」「Configuration」 절에는 키 이야기가 대개 들어 있습니다. 다만 README 첫머리의 「free」「open-source」「local」은 코드보다 넓게 쓰이는 경우가 많습니다. 「local」이 핵심 기능 전부를 말하는지, 일부 기능만 로컬로 도는지는 위 1~3단계로 확인하는 편이 정확합니다. README 와 코드가 다르게 말하면 코드가 실제로 일어나는 일입니다.
키를 넣기로 했다면 정해 둘 것
- 요금은 키 주인의 계정으로 나갑니다. 도구를 만든 사람이 아니라 키를 넣은 사람에게, 쓴 만큼 청구됩니다. 공급자 대부분은 챗봇 구독과 API 사용 요금을 따로 계산하므로, 구독이 있어도 API 키 사용분은 따로 나갈 수 있습니다.
- 에이전트형 도구는 한 번의 요청에 모델을 여러 번 부릅니다. 계획하고, 도구를 쓰고, 결과를 다시 읽는 과정이 각각 호출이라, 요금이 내가 보낸 질문 수보다 빨리 늡니다.
- 도구마다 키를 따로 만듭니다. 그러면 공급자 콘솔에서 도구별 사용량을 볼 수 있고, 그만 쓸 때 그 키만 지우면 됩니다. 콘솔에서 사용 한도나 알림을 걸 수 있다면 처음에 걸어 둡니다.
- 키를 적은
.env는 커밋하지 않습니다. 저장소의.gitignore에.env가 있는지 확인하고, 없다면 직접 더합니다.
이 사이트로 한 번에 보기
저장소 주소의 github.com 을 whatitcalls.com 으로 바꾸면, 이 사이트가 위 1~3단계를 코드에서 대신 확인한 결과를 보여 줍니다. 공급자마다 어느 기능이 부르는지, 키가 필요한지, 로컬로 바꾸는 설정이 있는지를 커밋에 고정된 줄 번호와 함께 적습니다. 다만 이 사이트도 코드를 읽기만 하고 실행하지는 않으므로, 읽지 못한 부분이 있으면 「확인 필요」로 남깁니다(「확인 필요」가 남는 이유).