(
query, base_url, model_name, temperature, top_p, max_tokens, top_k, presence_penalty
)
| 18 | |
| 19 | |
| 20 | def get_content( |
| 21 | query, base_url, model_name, temperature, top_p, max_tokens, top_k, presence_penalty |
| 22 | ): |
| 23 | API_KEY = os.environ.get("OPENAI_API_KEY", "EMPTY") |
| 24 | API_REQUEST_TIMEOUT = int(os.getenv("OPENAI_API_REQUEST_TIMEOUT", "99999")) |
| 25 | if IS_OPENAI_V1: |
| 26 | import httpx |
| 27 | |
| 28 | client = openai.OpenAI( |
| 29 | api_key=API_KEY, |
| 30 | base_url=base_url, |
| 31 | timeout=httpx.Timeout(API_REQUEST_TIMEOUT), |
| 32 | ) |
| 33 | else: |
| 34 | client = None |
| 35 | messages = [{"role": "user", "content": query}] |
| 36 | call_args = dict( |
| 37 | model=model_name, |
| 38 | messages=messages, |
| 39 | temperature=temperature, |
| 40 | top_p=top_p, |
| 41 | max_tokens=max_tokens, |
| 42 | presence_penalty=presence_penalty, |
| 43 | ) |
| 44 | if IS_OPENAI_V1: |
| 45 | call_args["extra_body"] = {} |
| 46 | extra_args_dict = call_args["extra_body"] |
| 47 | else: |
| 48 | extra_args_dict = call_args |
| 49 | extra_args_dict.update( |
| 50 | { |
| 51 | "top_k": top_k, |
| 52 | } |
| 53 | ) |
| 54 | |
| 55 | if IS_OPENAI_V1: |
| 56 | call_func = client.chat.completions.create |
| 57 | call_args["timeout"] = API_REQUEST_TIMEOUT |
| 58 | else: |
| 59 | call_func = openai.ChatCompletion.create |
| 60 | call_args["api_key"] = API_KEY |
| 61 | call_args["api_base"] = base_url |
| 62 | call_args["request_timeout"] = API_REQUEST_TIMEOUT |
| 63 | |
| 64 | result = "" |
| 65 | try: |
| 66 | completion = call_func( |
| 67 | **call_args, |
| 68 | ) |
| 69 | result = completion.choices[0].message.content |
| 70 | except AttributeError as e: |
| 71 | err_msg = getattr(completion, "message", "") |
| 72 | if err_msg: |
| 73 | time.sleep(random.randint(25, 35)) |
| 74 | raise ClientError(err_msg) from e |
| 75 | raise ClientError(err_msg) from e |
| 76 | except (APIConnectionError, RateLimitError) as e: |
| 77 | err_msg = e.message if IS_OPENAI_V1 else e.user_message |
no test coverage detected