关于OLLAMA API的应用

很多朋友部署完ollama后,也成功拉取了自己想要的模型,本地跑起来还不错。但毕竟在服务器上直接操作有一定的风险,而且只有服务器上一个人操作,严重浪费了资源。在实际应用中为了解决这些问题,所以我们通过OLLAMA API来调用OLLAMA内的模型,从而实现各类的AI应用。鉴于篇幅为难题,这里只写一段很小的,可以直接运行的代码。
在开始前,我们首先来看下OLLAMA API

OLLAMA服务器信息

这里以本地网络内的OLLAMA主机为例,简单说明下OLLAMA服务器的信息。
ollama服务器地址:192.168.1.128
ollama服务器端口号:11434 目前ollama安装的默认端口号就是11434
代码中调用的模型为:deepseek-r1:1.5b

HTTP调用ollama api

截至到该文章发布日期,OLLAMA版本为0.5.7
通过HTTP方式调用哦llama api 基础请求格式为:
curl -X POST http://192.168.1.128:11434/api/generate -H “Content-Type: application/json” -d “{“model”: “deepseek-r1:1.5b”, “prompt”: “天空为什么是蓝色的?”}”
当然如果你喜欢使用post工具,也可以使用post工具软件来测试基础请求是否能正常连接及输出。
正常情况下应该如下图
在这里插入图片描述
运行结果如下:
在这里插入图片描述
说明通过HTTP调用OLLAMA api的请求地址是正确的,ollama api工作正常,OLLAMA中加载的模型工作正常。如果你在学习和测试过程中显示不正常的,请一词排除OLLAMA API端口是否正常。HTTP路径是否正常,已经OLLAMA中的模型是否正常工作,至于如何逐步排查,很多人都有讲过,在这里就不讲了
这里要讲一点的是关于HTTP调用OLLAMA API的端点问题,也就是http请求ollama api路径的问题,通俗的可以这样说,但标准还是说端点把
主要有两个端点:一个是生成文本的端点,/api/generate。另一个是对话的端点,/api/chat。上图中就是使用生成文本的端点
下面给出的完整代码也是基于生成文本的端点来写的,至于对话的端点,大家自己写吧。
本人很少使用csdn对是否能完成保持正确格式粘贴代码段实在是不太有把握,但尽量试下吧

完整代码

python
import requests
import json

# OLLAMA服务器地址和端口
OLLAMA_URL = "http://192.168.1.128:11434"

def send_message_to_ollama(prompt):
    """
    发送消息到OLLAMA服务器并获取响应
    :param prompt: 用户输入的对话内容
    :return: OLLAMA模型的回复
    """
    payload = {
        "model": "deepseek-r1:1.5b",
        "prompt": prompt,
        "max_tokens": 150  # 根据需要调整生成的token数量
    }
    response = requests.post(f"{OLLAMA_URL}/api/generate", json=payload, stream=True)
    full_response = ""
    for line in response.iter_lines():
        if line:
            try:
                line_data = json.loads(line)
                response_chunk = line_data.get("response", "")
                # 过滤掉 <think> 和 </think> 内容
                if "<think>" in response_chunk or "</think>" in response_chunk:
                    continue
                if line_data.get("done"):
                    full_response += response_chunk
                    break
                full_response += response_chunk
            except json.JSONDecodeError as e:
                print(f"JSONDecodeError: {e}")
    return full_response

def main():
    print("欢迎使用OLLAMA多轮对话系统!输入'exit'退出对话。")
    conversation_history = []
    while True:
        user_input = input("你: ")
        if user_input.lower() == "exit":
            print("退出对话。")
            break
        conversation_history.append(f"你: {user_input}")
        prompt = "\n".join(conversation_history)
        print("请等待,AI正在思考。")  # 显示提示信息
        response = send_message_to_ollama(prompt)
        conversation_history.append(f"OLLAMA: {response}")
        print()  # 另起一行
        print(f"OLLAMA: {response}")

if __name__ == "__main__":
    main()

应该还算可以吧,反正是粘贴上去了,相应的库文件大家自己PIP install 吧

运行结果

直接上图,如下图:
在这里插入图片描述
只是一个抛砖引玉的作用,如果觉得这样很不方便使用,也想封装下至少保护下代码中的服务器地址和端口等,大家可以自行封装该代码。
如果喜欢WINDOWS窗口类的应用的化,可以加载PYQT5或PYQT6库,形成一个标准的WINDOW应用来发布。

码字有点累,就这样吧

Logo

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

更多推荐