openai.py 796 B

12345678910111213141516171819202122232425262728
  1. # -*- coding: utf-8 -*-
  2. from openai import AsyncOpenAI
  3. from openai.types.chat import ChatCompletionChunk
  4. from typing import List, AsyncGenerator
  5. from digitalHuman.protocol import RoleMessage
  6. class OpenaiLLM():
  7. @staticmethod
  8. async def chat(
  9. base_url: str,
  10. api_key: str,
  11. model: str,
  12. messages: List[RoleMessage],
  13. **kwargs
  14. ) -> AsyncGenerator[ChatCompletionChunk, None]:
  15. client = AsyncOpenAI(
  16. base_url=base_url,
  17. api_key=api_key
  18. )
  19. completions = await client.chat.completions.create(
  20. model=model,
  21. messages=[message.model_dump() for message in messages],
  22. stream=True,
  23. **kwargs
  24. )
  25. async for chunk in completions:
  26. yield chunk