事先声明:纯粹装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

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐