25 lines
977 B
Python
25 lines
977 B
Python
from llm.base import MultiModalAICapability
|
||
from langchain_openai import ChatOpenAI
|
||
# from openai import OpenAI # 如需图片/音频/视频等API
|
||
|
||
class OpenAIAdapter(MultiModalAICapability):
|
||
def __init__(self, api_key, model, **kwargs):
|
||
self.llm = ChatOpenAI(api_key=api_key, model=model, streaming=True)
|
||
self.api_key = api_key
|
||
|
||
async def chat(self, messages, **kwargs):
|
||
return await self.llm.ainvoke(messages)
|
||
|
||
async def stream_chat(self, messages, **kwargs):
|
||
async for chunk in self.llm.astream(messages):
|
||
yield chunk
|
||
|
||
# 如需图片生成(DALL·E),可实现如下
|
||
def create_drawing_task(self, **kwargs):
|
||
# 伪代码,需用 openai.Image.create
|
||
# import openai
|
||
# response = openai.Image.create(api_key=self.api_key, prompt=prompt, ...)
|
||
# return response
|
||
raise NotImplementedError("OpenAI 图片生成请用 openai.Image.create 实现")
|
||
|
||
# 其他能力同理 |