update: upload fix
This commit is contained in:
@@ -11,22 +11,44 @@ from app.services.llm.openai_vision import _parse_json_array
|
||||
|
||||
|
||||
class CustomOpenAICompatibleProvider(BaseLLMProvider):
|
||||
async def extract_from_image(self, image_bytes: bytes) -> list[TransactionExtractItem]:
|
||||
def _get_client(self) -> AsyncOpenAI:
|
||||
settings = get_settings()
|
||||
if not settings.custom_openai_api_key:
|
||||
raise ValueError("CUSTOM_OPENAI_API_KEY is not set")
|
||||
if not settings.custom_openai_base_url:
|
||||
raise ValueError("CUSTOM_OPENAI_BASE_URL is not set")
|
||||
client = AsyncOpenAI(
|
||||
return AsyncOpenAI(
|
||||
api_key=settings.custom_openai_api_key,
|
||||
base_url=settings.custom_openai_base_url,
|
||||
timeout=45.0,
|
||||
max_retries=1,
|
||||
)
|
||||
|
||||
def _get_model(self) -> str:
|
||||
return self._model_override or get_settings().custom_openai_model
|
||||
|
||||
async def extract_from_image(self, image_bytes: bytes) -> list[TransactionExtractItem]:
|
||||
client = self._get_client()
|
||||
b64 = base64.standard_b64encode(image_bytes).decode("ascii")
|
||||
messages = get_extract_messages(b64)
|
||||
response = await client.chat.completions.create(
|
||||
model=settings.custom_openai_model,
|
||||
model=self._get_model(),
|
||||
messages=messages,
|
||||
max_tokens=4096,
|
||||
timeout=45.0,
|
||||
)
|
||||
text = response.choices[0].message.content or "[]"
|
||||
return _parse_json_array(text)
|
||||
|
||||
async def chat(self, system: str, user: str) -> str:
|
||||
client = self._get_client()
|
||||
response = await client.chat.completions.create(
|
||||
model=self._get_model(),
|
||||
messages=[
|
||||
{"role": "system", "content": system},
|
||||
{"role": "user", "content": user},
|
||||
],
|
||||
max_tokens=4096,
|
||||
timeout=45.0,
|
||||
)
|
||||
return response.choices[0].message.content or ""
|
||||
|
||||
Reference in New Issue
Block a user