19、用 Python + OpenAI 构建一个命令行 AI 问答助手

🎯 教你用最少的代码,快速打造一个能在命令行对话的"ChatGPT 助手",支持多轮问答、聊天记录、持久化保存,既是工具也是项目展示。


✅ 本文目标

  • 通过 openai API 与 GPT 模型对话
  • 支持命令行输入 & 结构化输出
  • 加入历史上下文(记忆)
  • 可扩展成 CLI 工具或本地知识助手

🧰 环境准备

1. 安装依赖

复制代码
pip install openai rich

2. 获取 OpenAI API Key


🧠 基本结构(chat.py

python 复制代码
import openai
from rich import print
from rich.console import Console

# ✅ 替换成你的 OpenAI API 密钥
openai.api_key = "sk-xxxxx"

console = Console()
messages = [{"role": "system", "content": "你是一个有趣又专业的编程助手"}]

def chat():
    while True:
        try:
            user_input = console.input("[bold green]你:[/] ")
            if user_input.lower() in ["exit", "quit"]:
                break

            messages.append({"role": "user", "content": user_input})

            res = openai.ChatCompletion.create(
                model="gpt-3.5-turbo",  # 或 gpt-4
                messages=messages
            )

            reply = res.choices[0].message["content"]
            messages.append({"role": "assistant", "content": reply})
            console.print(f"[bold blue]助手:[/] {reply}\n")

        except Exception as e:
            print(f"[red]❌ 错误:{e}[/]")

if __name__ == "__main__":
    chat()

✨ 效果演示

ruby 复制代码
$ python chat.py
你:帮我写个快速排序
助手:
当然可以!这是 Python 版本的快速排序代码:
...

🧠 加分功能建议

功能 说明
保存对话记录 写入 chat_log.txt
使用 argparse 支持 --model gpt-4--prompt 等参数
本地嵌入文档 实现 Retrieval-Augmented Generation(进阶)
响应多行 markdown 使用 rich.markdown.Markdown 美化输出

📁 示例目录结构

bash 复制代码
chat-assistant/
├── chat.py
├── .env               # 可存放 API_KEY
└── README.md

✅ 项目实用价值

  • CLI 工具原型,能快速回答技术问题
  • 可扩展成"Chat with PDF"、Chatbot 网站
  • 可部署到终端、桌面、网页任意形态

📦 扩展挑战

  • ✅ 用 langchain + Chroma 本地知识库
  • ✅ 封装为 todoai CLI 工具(支持 chat / code / explain)
  • ✅ 用 Textual 打造 TUI UI(超好看)
相关推荐
人工干智能2 分钟前
OpenAI Assistants API 中 client.beta.threads.messages.create方法,兼谈一星*和两星**解包
python·llm
databook11 分钟前
当条形图遇上极坐标:径向与圆形条形图的视觉革命
python·数据分析·数据可视化
面汤放盐16 分钟前
后端系统设计文档模板
后端
阿部多瑞 ABU40 分钟前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
acanab44 分钟前
VScode python插件
ide·vscode·python
2***d8851 小时前
SpringBoot 集成 Activiti 7 工作流引擎
java·spring boot·后端
五阿哥永琪1 小时前
Spring中的定时任务怎么用?
java·后端·spring
追逐时光者1 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 65 期(2026年1.1-1.11)
后端·.net
计算机毕设VX:Fegn08951 小时前
计算机毕业设计|基于springboot + vue小型房屋租赁系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
gelald1 小时前
AQS 工具之 CountDownLatch 与 CyclicBarry 学习笔记
java·后端·源码阅读