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语言大模型的,这个版本的代码看起来多,其实功能非常单一、非常简陋。

缺陷:

全是缺陷。

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

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

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

相关推荐
代码山河4 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行4 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
释厄6235 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
梯度下降者5 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
“AI国潮设计-小江”7 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
benchmark_cc8 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读8 小时前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
外收内放8 小时前
Python基础语法练习题(73)
java·前端·python
锋行天下9 小时前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
择势9 小时前
iPhone Duo 适配实践:从几何原理到工程封装
ai编程