(self, system_prompt: str, user_prompt: str, **kwargs)
| 56 | |
| 57 | @with_retry(LLM_RETRY_CONFIG) |
| 58 | def invoke(self, system_prompt: str, user_prompt: str, **kwargs) -> str: |
| 59 | current_time = datetime.now().strftime("%Y年%m月%d日%H时%M分") |
| 60 | time_prefix = f"今天的实际时间是{current_time}" |
| 61 | if user_prompt: |
| 62 | user_prompt = f"{time_prefix}\n{user_prompt}" |
| 63 | else: |
| 64 | user_prompt = time_prefix |
| 65 | messages = [ |
| 66 | {"role": "system", "content": system_prompt}, |
| 67 | {"role": "user", "content": user_prompt}, |
| 68 | ] |
| 69 | |
| 70 | allowed_keys = {"temperature", "top_p", "presence_penalty", "frequency_penalty", "stream"} |
| 71 | extra_params = {key: value for key, value in kwargs.items() if key in allowed_keys and value is not None} |
| 72 | |
| 73 | timeout = kwargs.pop("timeout", self.timeout) |
| 74 | |
| 75 | response = self.client.chat.completions.create( |
| 76 | model=self.model_name, |
| 77 | messages=messages, |
| 78 | timeout=timeout, |
| 79 | **extra_params, |
| 80 | ) |
| 81 | |
| 82 | if response.choices and response.choices[0].message: |
| 83 | return self.validate_response(response.choices[0].message.content) |
| 84 | return "" |
| 85 | |
| 86 | def stream_invoke(self, system_prompt: str, user_prompt: str, **kwargs) -> Generator[str, None, None]: |
| 87 | """ |
nothing calls this directly
no test coverage detected