初探大模型-3-Python调用Ollama私有化部署的LLM

使用Ollama完成LLM私有化部署后,除了命令行方式进行问答,还需要能够通过代码调用接口的方式进行。目前主要有以下几种方式:requests调用方式、openai调用方式、ollama调用方式、

requests调用

代码示例:

# -*- coding: utf-8 -*-
import json

# @Author: Chuanqi Cheng
# @File: llm_requests.py

import requests
import pandas as pd

url = 'http://localhost:11434/api/chat'
def send_message(query):
    """构建请求参数"""
    payload={
        "model":"DeepSeek-R1-Distill-Qwen-14B:latest",
        "messages":[
            {"role":"user","content":query}
        ]
    }
    """请求Ollama中模型接口"""
    head = {"Content-Type": "application/json"}
    response = requests.post(url,json=payload,headers=head)

    if response.status_code == 200:
        response_content = ""
        response_json = pd.read_json(response.text,lines=True) # 坑,此处使用json容易因为换行符出错,使用pd可以

        for line in response_json["message"]:
            response_content += line.get('content')
        return response_content
    else:
        return f"回答失败:,{response.status_code}---{response.text}"

print(send_message('你好,你能帮我做些什么事情啊,你是谁'))

openai库调用

代码示例:

# -*- coding: utf-8 -*-

# @Author: Chuanqi Cheng
# @File: llm_openai.py

from openai import OpenAI
client = OpenAI(
    base_url = 'http://localhost:11434/v1/',
    api_key = 'ollama'
)
"""
构造模型请求参数
"""
def get_llm_params(prompt):
    messages=[{"role":"user","content":prompt}]
    return messages

def get_completion(prompt,model="DeepSeek-R1-Distill-Qwen-14B:latest",temperature=0.95):
    messages = get_llm_params(prompt)
    responses = client.chat.completions.create(
        model = model,
        temperature = temperature,
        messages = messages
    )
    if len(responses.choices) > 0:
        return responses.choices[0].message.content
    return "生成答案失败!"


print(get_completion('你好,你是谁'))

基于Ollama库调用

代码示例:

# -*- coding: utf-8 -*-

# @Author: Chuanqi Cheng
# @File: llm_ollama.py

import ollama
import json

host = 'http://localhost:11434'
client = ollama.Client(host=host)

def send_message(prompt,temperature=0.95,model='DeepSeek-R1-Distill-Qwen-14B:latest'):
    answer = client.chat(
        model = model,
        messages = [{
            "role":"user",
            "content":prompt
        }],
        options={"temperature":temperature}
    )


    print(answer["message"]["content"])

send_message("你好,你是谁,你会做什么事情")

// TODO// 还有其他库应该也可以,另外,没有深入研究流式输出和段落式输出,待学习。

posted @ 2025-05-30 17:41  AfroNicky  阅读(117)  评论(0)    收藏  举报