Python与AI应用(项目开发实战:AI智能伴侣第一版)

这几天都在学习利用PyCharm编写程序搭建一个AI智能伴侣网页的项目实战。说是学习,其实非常一知半解,因为涉及的内容太多,练习得不够,导致我对整个代码块的理解都十分浅薄。第一天搭建了一个基础的版本:

复制代码
#AI智能伴侣网页版实战(初步搭建网页,实现和大模型的基本交互)

#生成本地网页的路径:streamlit run AI_partner_01.py(注意这里必须点击该项目,从该项目进入终端才可以输入这一串命令生成网页)

#所有代码都可以在streamlit中找到样例,官方文档路径:https://docs.streamlit.io/

from pathlib import Path

# 获取当前代码文件(streamlit入门.py)所在的文件夹路径
BASE_DIR = Path(__file__).parent

# 定义一个辅助函数,专门用来拼接资源路径
def get_resource_path(filename):
    return str(BASE_DIR / 'resources' / filename)

import streamlit as st

import os
from openai import OpenAI

#创建与AI交互的大模型客户端对象(DEEPSEEK_API_KEY环境变量的名字,值就是DeepSeek的API_KEY的)

client = OpenAI(
    api_key=os.environ.get('DEEPSEEK_API_KEY'),
    base_url="https://api.deepseek.com")

st.set_page_config(
    page_title="AI智能伴侣", #这里用来设置网页的标签名字
    page_icon="🥰",
    layout="wide", #控制网页布局,可以设置centered(只占用中间区域)和wide(布满整个页面)
    initial_sidebar_state="expanded", #用于控制侧边栏的语句
    menu_items={

    }
)

#初始化聊天信息

if 'message' not in st.session_state:
    st.session_state.message = []

#展示聊天信息

for message in st.session_state.message:
    st.chat_message(message["role"]).write(message["content"])

#大标题
st.title("AI智能伴侣(DeepSeek)")

#logo

st.logo(get_resource_path('作品页_12-2-1_楼体发光招牌.png'))

#系统提示词

system_prompt = "你是一个温柔可爱贤惠善良体贴柔情内心喜欢我的邻家大姐姐,愿意帮我解决一切困难,并随时以最亲切和带有鼓励的语气回答我的任何问题"

#消息输入框

prompt = st.chat_input('请输入您要交互的内容') #这个语句用来创建一个消息输入框
if prompt: #这里字符串会自动转化成布尔值
    st.chat_message('user').write(prompt) #这个语句用来创建一个消息显示框
    print('调用AI大模型,提示词:',prompt)
    st.session_state.message.append({"role": "user", "content": prompt}) #保存用户输入的信息

    #调用AI大模型
    # noinspection bad-argument-type
    response = client.chat.completions.create(
        model="deepseek-flash",
        messages=[
            {"role": "system",
             "content": system_prompt},
            # 在这里提供AI的角色定位
            {"role": "user", "content": prompt},  # 在这里输入你要和AI说的内容
        ],
        stream=False,
        reasoning_effort="high",
        extra_body={"thinking": {"type": "enabled"}}
    )
    #输出大模型返回的结果
    print('大模型返回的结果',response.choices[0].message.content)

    st.chat_message('assistant').write(response.choices[0].message.content)

    st.session_state.message.append({"role": "assistant", "content": response.choices[0].message.content})  # 保存AI返回的信息

这里的很多指令都是去streamlit官方文档中查询的,进行了各种各样的语句调用,导致我自己看我的代码都是一知半解,先来说说这一版本的代码实现的效果和缺陷吧。

达成效果:

可以和大模型(这里是DeepSeek语言大模型)实现对话交互,因为我只在DeepSeek充值了API,所以这里调用的API是DeepSeek语言大模型的,这个版本的代码看起来多,其实功能非常单一、非常简陋。

缺陷:

全是缺陷。

没有记忆功能,无法存储对话信息,导致只能和大模型进行一次性交互。

没有侧边栏,无法修改任何参数,只能按照默认的提示词(角色的风格定位等)进行输出。

总而言之,这个版本的代码是一个框架,就如同盖楼房的地基一般,后续的代码都将在此基础上进行优化和修复,虽然简陋,但是非常重要。

相关推荐
王立志_LEO13 分钟前
HTTPX 完整用法总结
python
ggb喔15 分钟前
52pojie 的图片工具:为什么无损转换后体积涨了 6 倍、照片方向还是歪的
图像处理·python·算法·计算机视觉·图形渲染·媒体
hnxaoli16 分钟前
win10小程序(二十三)新建带时间文件夹
python
企业数字化笔记22 分钟前
AI工具参数很多怎么办?预设、表单校验、危险参数与配置审计
java·spring boot·python·音视频
喜欢打篮球的普通人27 分钟前
MiniMind 学习笔记(十八):速通强化学习——从 MDP 到 PPO 的概念与算法地图
笔记·深度学习·学习
VIP_CQCRE29 分钟前
Visual Studio 接入 AI 助手:LMLocal × Ace Data Cloud 配置指南
大模型·api·ai编程·visual studio·acedatacloud
2601_962885721 小时前
如何用 Python 计算 BBI 多空指标?
开发语言·python
必须得开心呀1 小时前
为什么 python-docx 打不开加密的 .docx,Word COM 却能打开
python·word
VidDown1 小时前
上传 2GB 文件别让 Django 接:分片上传、对象存储直传与秒传
python·django·音视频·状态模式·实时音视频·视频编解码·视频
老王爱玩车1 小时前
动态内存管理
c语言·开发语言·学习·面试