mirror of
https://github.com/YerbaPage/LongCodeZip.git
synced 2025-10-22 23:19:46 +03:00
72 lines
2.0 KiB
Python
72 lines
2.0 KiB
Python
# SPDX-FileCopyrightText: (c) 2024 EvalPlus Team
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import signal
|
|
import time
|
|
|
|
import anthropic
|
|
from anthropic.types import Message
|
|
|
|
from repoqa.provider.request import construct_message_list
|
|
|
|
|
|
def make_request(
|
|
client: anthropic.Client,
|
|
message: str,
|
|
model: str,
|
|
max_tokens: int = 512,
|
|
temperature: float = 1,
|
|
system_msg="You are a helpful assistant good at coding.",
|
|
**kwargs,
|
|
) -> Message:
|
|
return client.messages.create(
|
|
model=model,
|
|
messages=construct_message_list(message, system_message=system_msg),
|
|
max_tokens=max_tokens,
|
|
temperature=temperature,
|
|
**kwargs,
|
|
)
|
|
|
|
|
|
def handler(signum, frame):
|
|
# swallow signum and frame
|
|
raise Exception("end of time")
|
|
|
|
|
|
def make_auto_request(client: anthropic.Client, *args, **kwargs) -> Message:
|
|
ret = None
|
|
while ret is None:
|
|
try:
|
|
signal.signal(signal.SIGALRM, handler)
|
|
signal.alarm(100)
|
|
ret = make_request(client, *args, **kwargs)
|
|
signal.alarm(0)
|
|
except anthropic.RateLimitError:
|
|
print("Rate limit exceeded. Waiting...")
|
|
signal.alarm(0)
|
|
time.sleep(10)
|
|
except anthropic.APIConnectionError:
|
|
print("API connection error. Waiting...")
|
|
signal.alarm(0)
|
|
time.sleep(5)
|
|
except anthropic.InternalServerError:
|
|
print("Internal server error. Waiting...")
|
|
signal.alarm(0)
|
|
time.sleep(5)
|
|
except anthropic.APIError as e:
|
|
print("Unknown API error")
|
|
print(e)
|
|
if (
|
|
e.body["error"]["message"]
|
|
== "Output blocked by content filtering policy"
|
|
):
|
|
raise Exception("Content filtering policy blocked output")
|
|
signal.alarm(0)
|
|
except Exception as e:
|
|
print("Unknown error. Waiting...")
|
|
print(e)
|
|
signal.alarm(0)
|
|
time.sleep(1)
|
|
return ret
|