月夜钓钱江鱼

醉后不知天在水,满船清梦压星河。

本地 运行大模型比较 方便,我们就弄个本地的,使用ollama进行搭建。

一、下载大模型服务Ollama

到https://ollama.com/download下载安装包(以下以Windows为例)。

二、安装Ollama软件

安装好后在任务校址有启动图标

三、下载摘取模型,以千问2.5为例

打开模型地址:https://ollama.com/library/qwen2.5:7b-instruct

下载对应模型,本人下载qwen2.5:7b-instruct ,如下图所示:

 

四、运行模型进行对话

执行命令:ollama run qwen2.5:7b-instruct 如下图所示:

 

五、搭建网页版本对话

打开VSCode,输入代码:

import streamlit as st  # 导入 Streamlit 库,用于快速构建 Web 应用
from openai import OpenAI  # 导入 OpenAI 客户端,用于与模型交互

# 初始化客户端,设置 Ollama 本地服务的 URL 和默认 API Key
client = OpenAI(
    base_url='http://localhost:11434/v1/',  # 指定 Ollama 本地服务 URL
    api_key='ollama',  # 使用默认的 API Key (如为本地服务一般不需实际验证)
)

def main():
    # 设置 Streamlit 应用的标题
    st.title("基于 Qwen 模型的实时聊天应用")

    # 在页面上添加一个文本输入框,用户可以输入自己的问题或内容
    user_input = st.text_input("请输入内容:", "")  # 默认内容为空

    # 添加一个按钮,点击后触发生成操作
    if st.button("生成"):  # 检测用户是否点击了“生成”按钮
        if user_input.strip():  # 确保用户输入了非空内容
            with st.spinner("生成中..."):  # 显示一个加载动画,提示用户正在生成
                # 调用模型的流式生成接口,生成内容
                chat_completion = client.chat.completions.create(
                    messages=[  # 输入内容列表
                        {
                            'role': 'user',  # 定义角色为用户
                            'content': user_input,  # 用户输入的内容
                        }
                    ],
                    model='qwen2.5:7b-instruct',  # 指定使用的模型名称qwen2.5:7b-instruct  qwen2.5:0.5b
                    stream=True,  # 启用流式模式,实时获取生成结果
                    temperature=0.5,  # 设置生成的随机性,0.5 是中等随机性
                    max_tokens=512,  # 设置最大生成长度
                    top_p=0.8  # 设置采样的概率范围,较高的值会更多样化
                )

                # 准备存储生成结果的列表
                result = []
                response_placeholder = st.empty()  # 创建一个占位符,用于实时更新生成结果

                # 遍历模型返回的流式内容
                for chunk in chat_completion:
                    # 检查当前 chunk 是否包含生成内容的 delta 属性
                    if hasattr(chunk.choices[0].delta, 'content'):  # 如果有 content 属性
                        content = chunk.choices[0].delta.content  # 获取生成的内容
                        result.append(content)  # 将内容添加到结果列表中
                        response_placeholder.text(''.join(result))  # 实时更新显示结果
        else:
            # 如果用户没有输入任何内容,显示警告提示
            st.warning("请输入内容以开始生成!")

if __name__ == "__main__":
     main()

  可以不用定义main函数

运行 :streamlit run g:/aBigModels/2Codes/FirstModels/app.py

由于streamlit 使用这个服务,所以单独运行的

 

六、运行在网页上

运行后会启动网页,如果没有自动打开需要自己打开浏览器

输入对话,下面内容就回复,如上图所示。

 七、修改默认模型存放地址

原来默

认地址放在 C盘

 

修改后变成环境变量的位置,如上图所示。

 

posted on 2024-11-21 16:50  湘灵  阅读(107)  评论(0编辑  收藏  举报