|
|
import os
|
|
|
|
|
|
from openai import OpenAI
|
|
|
|
|
|
|
|
|
def openAIChatLLM(model_name=None, api_key=None, base_url=None):
|
|
|
"""
|
|
|
model_name 取值
|
|
|
- deepseek-chat
|
|
|
"""
|
|
|
api_key = os.environ.get("OPENAI_API_KEY", api_key)
|
|
|
base_url = os.environ.get("OPENAI_BASE_URL", base_url)
|
|
|
|
|
|
client = OpenAI(api_key=api_key, base_url=base_url)
|
|
|
|
|
|
def chatLLM(
|
|
|
messages: list,
|
|
|
temperature=None,
|
|
|
top_p=None,
|
|
|
max_tokens=None,
|
|
|
stream=False,
|
|
|
model=model_name,
|
|
|
) -> dict:
|
|
|
if not stream:
|
|
|
response = client.chat.completions.create(
|
|
|
|
|
|
model=model,
|
|
|
messages=messages,
|
|
|
temperature=temperature,
|
|
|
top_p=top_p,
|
|
|
max_tokens=max_tokens,
|
|
|
)
|
|
|
return {
|
|
|
"content": response.choices[0].message.content,
|
|
|
"total_tokens": response.usage.total_tokens,
|
|
|
}
|
|
|
else:
|
|
|
responses = client.chat.completions.create(
|
|
|
|
|
|
model=model,
|
|
|
messages=messages,
|
|
|
temperature=temperature,
|
|
|
top_p=top_p,
|
|
|
max_tokens=max_tokens,
|
|
|
stream=True,
|
|
|
)
|
|
|
|
|
|
def respGenerator():
|
|
|
content = ""
|
|
|
for response in responses:
|
|
|
delta = response.choices[0].delta.content
|
|
|
|
|
|
|
|
|
if delta is not None:
|
|
|
content += delta
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
total_tokens = None
|
|
|
|
|
|
yield {
|
|
|
"content": content,
|
|
|
"total_tokens": total_tokens,
|
|
|
}
|
|
|
|
|
|
return respGenerator()
|
|
|
|
|
|
return chatLLM
|
|
|
|