一.前言

当你成为一名社畜之后,还能保留几分当初对于技术的热爱和积极?

长夜漫漫,无心睡眠。这篇文章算是自己开始学习智能体开发的一个起点吧,成年人的世界不需要那么多的前言(哈哈)

二.部署流程

本地部署好处:离线,保护隐私。缺点:要想反馈效果好,要用高版本,占用存储空间大。

Ollama官网:Ollama

去官网下载对应系统的版本。

下载好之后,安装会默认安装到C盘。

安装好之后,去Ollama官网找到自己想部署的大模型

根据自己的硬件配置合理挑选即可。点进去,复制命令,用PowerShell执行大模型下载,下载之前尽量调一下下载位置。别放系统盘,如下。

点击Settings,选择合适的位置

我选的模型:

选择合适的版本:

启动Power Shell,执行命令

下载完成后,检验是否启动成功,如下显示即为成功:

访问本地端口 127.0.0.1:11434

不过我随便在命令行里问了句,你好,你喜欢上班吗,就思考了半天,纯拿低阶版本玩玩就行了,丫够慢的。

接下来在Ollama里测试下试试

三.Ollama交互开发小示例

有些场景需要回答复杂或者专业问题的交互,亦或是需要并发多个模型来解决问题,这时候需要通过脚本来进行交互解决问题。

脚本代码:

# 这是和Ollama交互的代码,用于发送请求和接收响应。
# Ollama是一个基于Docker的模型服务器,用于运行和管理本地的AI模型。

# 导入requests库,用于发送HTTP请求
import requests

# 配置使用的模型名称,qwen3.5:2b是通义千问的2B参数版本
# 如果拉取了其他模型,需要改成对应名称
MODEL = "qwen3.5:2b"

# Ollama API的本地服务地址,默认端口为11434
# /api/chat端点用于对话交互
API_URL = "http://127.0.0.1:11434/api/chat"


def chat_once(prompt: str) -> str:
    """
    向Ollama模型发送一次请求并返回响应文本
    
    Args:
        prompt: 用户输入的提示词或问题
        
    Returns:
        模型生成的回复文本
        
    Raises:
        requests.RequestException: 当HTTP请求失败时抛出
    """
    # 发送POST请求到Ollama API
    resp = requests.post(
        API_URL,
        json={
            "model": MODEL,  # 指定使用的模型名称
            "messages": [{"role": "user", "content": prompt}],  # 消息列表,包含用户角色和内容
            "stream": False,  # 关闭流式输出,等待完整响应后返回
        },
        timeout=100,  # 设置请求超时时间为100秒
    )
    
    # 如果HTTP响应状态码不是2xx,则抛出异常
    resp.raise_for_status()
    
    # 解析JSON响应数据
    data = resp.json()
    
    # 从响应数据中提取模型回复的内容并返回
    return data["message"]["content"]


def main() -> None:
    """
    主函数:实现交互式对话循环
    用户可以持续输入问题与AI对话,输入"再见"退出程序
    """
    print("输入提问(输入"再见"退出):")
    
    # 主循环:持续接收用户输入
    while True:
        # 获取用户输入并去除首尾空格
        user_input = input("> ").strip()
        
        # 检查退出条件
        if user_input == "再见":
            print("再见!")
            break
        
        # 如果输入为空,跳过本次循环
        if not user_input:
            continue
        
        try:
            # 调用chat_once函数发送请求并获取回复
            reply = chat_once(user_input)
            # 打印模型的回复
            print("Qwen:", reply)
        except requests.RequestException as exc:
            # 捕获并处理网络请求相关的异常
            print(f"请求失败:{exc}")


# 程序入口点:确保脚本被直接运行时才执行main函数
if __name__ == "__main__":
    main()

运行结果:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐