요구 사항#
Python 3.11 이상. 추가 패키지 불필요. WEIGHTSAPI_API_KEY를 자신의 키로 설정하세요. AI 접근에는 로그인, 최소 100 USD의 확인된 충전 1회, 승인된 API 키, 요청에 충분한 사용 가능 크레딧이 필요합니다. 이후 각 충전도 최소 100 USD이며, 요청을 충당할 때 더 적은 잔액도 계속 사용할 수 있습니다. 크레딧은 거래 검증이 필요합니다. 트래픽을 보내기 전에 모델 가용성은 서비스 상태를 확인하세요.
레시피 실행#
import os, json, urllib.request
BASE = os.environ.get("WEIGHTSAPI_BASE_URL", "https://weightsapi.com/v1")
KEY = os.environ["WEIGHTSAPI_API_KEY"]
def chat(messages, model="Qwen/Qwen3-32B", **options):
payload = dict(model=model, messages=messages, max_tokens=512, **options)
req = urllib.request.Request(BASE+"/chat/completions", json.dumps(payload).encode(),
{"Authorization": "Bearer "+KEY, "Content-Type": "application/json"})
with urllib.request.urlopen(req, timeout=120) as response:
return json.load(response)
tools = [{"type":"function","function":{"name":"get_stock","description":"Look up product inventory.",
"parameters":{"type":"object","properties":{"sku":{"type":"string"}},"required":["sku"],"additionalProperties":False}}}]
messages = [{"role":"user","content":"How many keyboards are in stock? SKU keyboard."}]
first = chat(messages, tools=tools)["choices"][0]["message"]
messages.append(first)
for call in first.get("tool_calls", []):
if call["function"]["name"] != "get_stock": raise ValueError("Unknown tool")
args = json.loads(call["function"]["arguments"])
if set(args) != {"sku"} or not isinstance(args["sku"], str): raise ValueError("Invalid arguments")
result = {"sku":args["sku"],"quantity":{"keyboard":12}.get(args["sku"],0)}
messages.append({"role":"tool","tool_call_id":call["id"],"content":json.dumps(result)})
print(chat(messages)["choices"][0]["message"]["content"])
프로덕션 전#
워크플로를 사용자에게 노출하기 전에 동시성과 재시도를 제한하고, 출력을 검증하며, 오류를 처리하세요.