ollama run 模型名称
from openai import OpenAI
from config.config import DEEPSEEK_API_KEY,DEEPSEEK_BASE_URL
client = OpenAI(api_key=DEEPSEEK_API_KEY, base_url=DEEPSEEK_BASE_URL)
response = client.chat.completions.create(
model="deepseek-reasoner", # "deepseek-reasoner", # "deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "你是谁?"},
],
stream=False
)
print(response.choices[0].message.content)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1")
response = client.chat.completions.create(
model="qwen3:4b", # "deepseek-reasoner", # "deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "你是谁?"},
],
stream=False
)
print(response.choices[0].message.content)
获取客户端对象:
- 主要是用以下2个参数:
api_key:模型服务商提供的 APIKEY 秘钥
base_url:模型服务商的 API 接入地址(主要基于此参数切换不同模型服务商,如:OpenAI、阿里云、腾讯云等)
- 示例:
from openai import OpenAI
client = OpenAI(api_key="your api key", base_url="服务商 BaseUrl")
调用模型:
- 通过 client.chat.completions.create 创建 ChatCompletion 对象
- 主要参数有2个:
model:选择所用模型,如:deepseek-chat、deepseek-reasoner、qwen3:4b
messages:提供给模型的消息
类型:list,可以包含多个字典消息
每个字典消息包含2个key,分别是:role(角色)和 content(内容)
- system 角色:设定助手的整体行为、角色和规则,为对话提供上下文框架(如指定助手身份、回答风格、核心需求),是全局的背景设定,影响后续所有交互
- assistant 角色:代表 AI 助手的回答,可以在代码中认为设定
- user 角色:代表用户,发送问题、指令或需求
- 示例:
from openai.types.chat.chat_completion import ChatCompletion
response: ChatCompletion = client.chat.completions.create(
model = "deepseek-chat",
messages = [
{ "role": "system", "content": "你是一个 Python 编程专家,并且不说废话简单回答。" },
{ "role": "assistant", "content": "我是一个 Python 编程专家,请问有什么可以帮您的吗?" },
{ "role": "user", "content": "获取当前时间" },
]
)
处理结果:
- 可以通过 print(response.choices[0].message.content) 输出模型给出的回答信息
- 示例:
{
"id": "46dffd30-26ce-4244-96f1-91c196921fe9",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "你好!我是DeepSeek,由深度求索公司创造的AI助手。😊\n\n我是一个纯文本 档等。虽然我不支持多模态识别,但我具有文件上传功能,可以读取和处理图像、txt、pdf、ppt、word、excel等文件中的文字信息。\n\n我完全免费使用,拥有128K的上下文长度,还支持联网搜索功能(需要你在Web/App中手动点开联网搜索按键)。你也可以",
"role": "assistant",
"annotations": null,
"audio": null,
"function_call": null,
"tool_calls": null,
"reasoning_content": "啊这,用户问我是谁,这是很常见的开场问题。需要简单清晰地介绍自己的身份和功能,避免复杂描述。\n\n可以用公司背景和核心能力作为开头,让用户快速建尾加上表情符号显得更亲切。"
}
}
],
"created": 1776323466,
"model": "deepseek-reasoner",
"object": "chat.completion",
"service_tier": null,
"system_fingerprint": "fp_eaab8d114b_prod0820_fp8_kvcache_new_kvcache_20260410",
"usage": {
"completion_tokens": 218,
"prompt_tokens": 11,
"total_tokens": 229,
"completion_tokens_details": {
"accepted_prediction_tokens": null,
"audio_tokens": null,
"reasoning_tokens": 80,
"rejected_prediction_tokens": null
},
"prompt_tokens_details": {
"audio_tokens": null,
"cached_tokens": 0
},
"prompt_cache_hit_tokens": 0,
"prompt_cache_miss_tokens": 11
}
}
from openai import OpenAI
from config.config import DEEPSEEK_API_KEY,DEEPSEEK_BASE_URL
client = OpenAI(api_key=DEEPSEEK_API_KEY, base_url=DEEPSEEK_BASE_URL)
response = client.chat.completions.create(
model="deepseek-reasoner", # "deepseek-reasoner", # "deepseek-chat",
messages=[
{"role": "system", "content": "你是一个 Python 编程专家。"},
{"role": "assistant", "content": "我是一个 Python 编程专家,请问有什么可以帮您的吗?"},
{"role": "user", "content": "进行Python介绍"},
],
stream=True # 开启流式输出
)
"""
end="":Python 的 print() 函数默认会在输出内容的末尾添加一个换行符 \n。
设置为 "" 的作用:将结尾字符改为空字符串。这意味着打印完内容后,不换行,光标停留在当前行的末尾。
flush=True:为了提高效率,Python 通常不会每打印一个字符就立即写入屏幕(标准输出),而是先将内容存入一个缓冲区(Buffer)。当缓冲区满了,或者程序结束、遇到换行符时,才一次性把缓冲区的内容显示出来。
设置为 True 的作用:强制刷新缓冲区。这意味着 print() 执行后,内容会立即显示在终端屏幕上,不再等待缓冲区填满。
"""
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
# print(response.choices[0].message.content)