use gpt function

This commit is contained in:
fiatrete
2023-06-16 15:58:57 +08:00
parent 88e3ed0648
commit 0a4feb1daf
11 changed files with 181 additions and 135 deletions
+17 -6
View File
@@ -21,6 +21,7 @@ async def acreate_chat_completion_once(
max_tokens: int | None = None,
deployment_id=None,
request_timeout=40,
**kwargs
) -> str:
"""
Create a chat completion and update the cost.
@@ -39,7 +40,8 @@ async def acreate_chat_completion_once(
messages=messages,
temperature=temperature,
max_tokens=max_tokens,
request_timeout=request_timeout
request_timeout=request_timeout,
**kwargs
)
else:
response = await openai.ChatCompletion.acreate(
@@ -47,7 +49,8 @@ async def acreate_chat_completion_once(
messages=messages,
temperature=temperature,
max_tokens=max_tokens,
request_timeout=request_timeout
request_timeout=request_timeout,
**kwargs
)
if CFG.debug_mode:
logger.debug(f"Response: {response}")
@@ -65,12 +68,13 @@ async def acreate_chat_completion(
max_tokens: int = None,
request_timeout: int = 40,
num_retries=3,
on_single_request_timeout: Callable = None
on_single_request_timeout: Callable = None,
**kwargs
):
"""Create a chat completion using the OpenAI API
Args:
messages (List[Message]): The messages to send to the chat completion
messages (List[dict]): The messages to send to the chat completion
model (str, optional): The model to use. Defaults to None.
temperature (float, optional): The temperature to use. Defaults to 0.9.
max_tokens (int, optional): The max tokens to use. Defaults to None.
@@ -100,6 +104,7 @@ async def acreate_chat_completion(
temperature=temperature,
max_tokens=max_tokens,
request_timeout=request_timeout,
**kwargs
)
else:
response = await acreate_chat_completion_once(
@@ -108,6 +113,7 @@ async def acreate_chat_completion(
temperature=temperature,
max_tokens=max_tokens,
request_timeout=request_timeout,
**kwargs
)
break
except RateLimitError:
@@ -129,5 +135,10 @@ async def acreate_chat_completion(
if response is None:
logger.error(f"Failed to get response from GPT after {num_retries} retries")
raise RuntimeError(f"Failed to get response after {num_retries} retries")
resp = response.choices[0].message["content"]
return resp
choice_message = response.choices[0].message
content = choice_message.get("content")
if content is None:
return "function_call", {k: v for k, v in choice_message["function_call"].items()}
else:
return "content", content