useless:在终端命令行使用deepseek聊天
1.编写python脚本。2.使用别名调用脚本。
·
事先声明:纯粹装X向,没有什么用,毕竟使用网页搜索更方便:在linux服务器上,编写一个调用deepseek的命令行界面,主要功能如下:
- 在命令行输入助手名称,开启对话
- 可以进行多轮对话,输入exit退出
界面如下:

操作步骤:
1.编写python脚本
- 替换成自己申请的api和key
- 默认保存问答记录到本地文件
import os
import logging
from more_itertools.more import substrings
from openai import OpenAI
import time
from datetime import datetime
# 配置日志
logging.basicConfig(
format='%(asctime)s - %(levelname)s - %(message)s',
level=logging.ERROR
)
# 初始化客户端
# model="deepseek-reasoner"
model="deepseek-chat"
client = OpenAI(
api_key="",
base_url="https://api.deepseek.com/v1",
)
# 对话系统配置
SYSTEM_PROMPT = "你是一个专业的python程序员。"
messages = [{"role": "system", "content": SYSTEM_PROMPT}]
def get_user_input() -> int:
"""获取用户输入的消息数量"""
while True:
try:
user_input = input("\n请输入消息数量(1-5,留空默认1,输入exit退出): ").strip()
if user_input.lower() == 'exit':
return -1
if not user_input:
return 1
num = int(user_input)
if 1 <= num <= 5:
return num
print("输入范围应为1-5")
except ValueError:
print("请输入有效数字")
def save_to_md(question, answer):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
separator = "\n----\n"
current_dir = os.path.dirname(os.path.abspath(__file__))
log_path = os.path.join(current_dir, str.replace(timestamp[:10],"-","")+"_QA_log.md")
with open(log_path, "a", encoding="utf-8") as f:
f.write(f"\n{timestamp}{separator}")
f.write(f"**问题**: {question}\n\n")
f.write(f"**答案**: {answer}{separator}")
def chat_session():
"""对话会话管理"""
round_count = 0
while True:
try:
print(f"\n{'=' * 30} 第 {round_count+1} 轮回答 {'=' * 30}")
# 获取消息数量
num_messages = get_user_input()
if num_messages == -1:
print("\n对话已结束")
break
# 收集用户消息
for i in range(num_messages):
while True:
content = input(f"[用户消息 {i + 1}/{num_messages}] >>> ").strip()
if content:
messages.append({"role": "user", "content": content})
break
print("输入不能为空")
# API请求
round_count += 1
start_time = time.time()
start_dt = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"▶ 开始时间: {start_dt}")
stream = client.chat.completions.create(
messages=messages,
stream=True,
model=model
)
# 处理流式响应
answer_content = ""
print("-" * 50)
for chunk in stream:
if chunk.choices[0].delta.content is not None:
chunk_content = chunk.choices[0].delta.content
print(chunk_content, end="", flush=True)
answer_content += chunk_content
print("\n"+"-" * 50)
# 记录结果
end_dt = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
time_cost = time.time() - start_time
print(f"◼ 结束时间: {end_dt}")
print(f"⏱ 耗时: {time_cost:.2f}s")
# print('=' * 70)
save_to_md(content,answer_content)
# 保存上下文(保留最近3轮对话)
messages.append({"role": "assistant", "content": answer_content})
if len(messages) > 7: # system + 3轮(user+assistant)
messages.pop(1)
messages.pop(1)
except KeyboardInterrupt:
print("\n用户中断操作")
break
except Exception as e:
logging.error(f"API请求失败: {str(e)}")
print("请求异常,请稍后重试")
if __name__ == "__main__":
print("=" * 50)
print("DeepSeek 对话助手")
print("输入说明:")
print("- 输入数字 1-5 设置连续提问数量")
print("- 直接回车使用默认1条提问")
print("- 输入 exit 结束程序")
print("=" * 50)
chat_session()
2.使用别名调用脚本
这里我使用的别名是moss:
#编辑~/.bashrc
vim ~/.bashrc
#添加python脚本命令
alias moss='python /home/jiahao/py/P1/test/deepseek.py'
#是环境变量生效
source ~/.bashrc
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)