构建个人大模型问答助手(基于Streamlit +gpt-4o/o1-mini):全面解析与实现

在当今人工智能迅猛发展的时代,构建一个个人化的大模型问答助手不仅能够提高工作效率,还能为日常生活带来便利。本篇博客将详细解析如何使用Python和Streamlit框架,结合OpenAI的API,搭建一个类似于ChatGPT的问答系统。我们将分步骤介绍代码实现,同时确保敏感信息的安全性。

项目代码地址:
https://gitcode.com/sequoia00/appChat_streamlit/overview

目录

  1. 项目概述
  2. 环境准备
  3. 代码实现详解
  4. 安全性与隐私保护
  5. 总结
  6. 参考资料

项目概述

本项目旨在通过Python和Streamlit框架,结合OpenAI的API,构建一个个人化的问答助手。该助手允许用户选择不同的语言模型,与之进行对话,同时管理聊天历史记录,实现保存、加载、备份和删除功能。通过这一项目,用户可以体验到类似于ChatGPT的对话体验,并根据需求进行定制。

环境准备

在开始编码之前,确保你的开发环境中已经安装了以下软件和库:

  • Python 3.7+
  • Streamlit:用于构建Web应用的框架。
  • OpenAI Python SDK:用于与OpenAI的API进行交互。
  • 其他辅助库:如json, os, glob, re, shutil等。

可以使用以下命令安装必要的库:

pip install streamlit openai

代码实现详解

下面,我们将对整个代码进行逐段详细解析,帮助读者深入理解每一部分的功能与实现。

导入必要的库

from openai import OpenAI
import streamlit as st
import json
import os
import glob
import re
import shutil  # 用于文件移动

解析:

这些库为项目提供了必要的功能支持:

  • openai:与OpenAI API交互。
  • streamlit:构建用户界面。
  • json:处理JSON数据格式。
  • os, glob, re, shutil:文件和目录管理。

API密钥与模型配置

# 示例:模型和相应的 API 密钥
default_key = "sk-***"  # 默认令牌
sale_key = "sk-***"  # 自定义默认1.0
guan_key = "sk-***"  # 管转令牌3倍
az_key = "sk-***"  # 纯AZ,1.5倍
claude_key = "sk-***"  # claude 8倍
guan5_key = "sk-***"  # 管转令牌5倍

model_keys = {
   
   
    "gpt-4o-mini-2024-07-18": az_key,  #1.5
    "o1-mini": guan5_key,    #3
    "gpt-4o-2024-08-06": az_key,
    "claude-3-5-sonnet-20240620": claude_key
}

解析:

  • API密钥管理:为不同的模型配置不同的API密钥,以实现对不同服务的调用和控制。
  • 模型选择:通过model_keys字典,将模型名称与对应的API密钥关联,方便用户在界面上选择。

安全建议:

将API密钥硬编码在代码中存在安全风险。建议使用环境变量或配置文件来存储这些密钥,并在代码中通过读取环境变量的方式获取,以避免泄露风险。

界面构建

st.title("ChatGPT-like Clone")
selected_model = st.sidebar.selectbox("选择模型", list(model_keys.keys()))
api_key = model_keys[selected_model]
api_url = "https://api.manyi88.top/v1" #ManyiAPI聚合接口站:https://api.manyi88.top

client = OpenAI(api_key=api_key, base_url=api_url)

解析:

  • 标题设置:通过st.title函数设置应用的标题。
  • 模型选择:在侧边栏提供一个下拉菜单,用户可以选择不同的模型。
  • API客户端初始化:根据用户选择的模型,获取对应的API密钥和API URL,初始化OpenAI客户端。

数据管理

data_dir = "data"
backup_dir = "data_bak"
if not os.path.exists(data_dir):
    os.makedirs(data_dir)
if not os.path.exists(backup_dir):
    os.makedirs(backup_dir)

解析:

  • 数据目录data_dir用于存储聊天记录。
  • 备份目录backup_dir用于备份历史聊天记录。
  • 目录检查与创建:如果目录不存在,自动创建,确保文件操作的顺利进行。

会话ID管理

session_id_file = os.path.join(data_dir, "session_id.txt")

def load_session_id():
    if os.path.exists(session_id_file):
        with open(session_id_file, "r") as f:
            return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风翔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值