MCPcopy
hub / github.com/showlab/Code2Video / request_claude

Function request_claude

src/gpt_request.py:27–69  ·  view source on GitHub ↗
(prompt, log_id=None, max_tokens=16384, max_retries=3)

Source from the content-addressed store, hash-verified

25
26
27def request_claude(prompt, log_id=None, max_tokens=16384, max_retries=3):
28 base_url = cfg("claude", "base_url")
29 api_key = cfg("claude", "api_key")
30 client = OpenAI(base_url=base_url, api_key=api_key)
31
32 if log_id is None:
33 log_id = generate_log_id()
34
35 extra_headers = {"X-TT-LOGID": log_id}
36
37 retry_count = 0
38 while retry_count < max_retries:
39 try:
40 response = client.chat.completions.create(
41 model="claude-4-opus",
42 messages=[
43 {
44 "role": "user",
45 "content": [
46 {
47 "type": "text",
48 "text": prompt,
49 },
50 ],
51 }
52 ],
53 max_tokens=max_tokens,
54 extra_headers=extra_headers,
55 )
56
57 return response.choices[0].message.content.strip()
58
59 except Exception as e:
60 retry_count += 1
61 if retry_count >= max_retries:
62 raise Exception(f"Failed after {max_retries} attempts. Last error: {str(e)}")
63
64 # Exponential backoff with jitter
65 delay = (2**retry_count) * 0.1 + (random.random() * 0.1)
66 print(
67 f"Request failed with error: {str(e)}. Retrying in {delay:.2f} seconds... (Attempt {retry_count}/{max_retries})"
68 )
69 time.sleep(delay)
70
71
72def request_claude_token(prompt, log_id=None, max_tokens=10000, max_retries=3):

Callers

nothing calls this directly

Calls 2

cfgFunction · 0.85
generate_log_idFunction · 0.85

Tested by

no test coverage detected