57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
import requests
|
|
|
|
|
|
class Ollama:
|
|
def __init__(self, model="qwen2.5:14b", server_url="http://192.168.1.200:11434"):
|
|
self.model = model
|
|
self.server_url = server_url
|
|
|
|
def is_service_running(self):
|
|
"""检查 Ollama 服务是否正在运行"""
|
|
try:
|
|
url = f"{self.server_url}/api/generate"
|
|
headers = {"Content-Type": "application/json"}
|
|
payload = {
|
|
"model": self.model,
|
|
"prompt": "ping", # 使用轻量级的 prompt 测试
|
|
"stream": False
|
|
}
|
|
output = requests.post(url, headers=headers, json=payload, timeout=60)
|
|
if output.status_code == 200:
|
|
return True
|
|
else:
|
|
return False
|
|
except requests.exceptions.RequestException:
|
|
return False
|
|
|
|
def generate_text(self, input_message: str):
|
|
url = f"{self.server_url}/api/generate"
|
|
headers = {"Content-Type": "application/json"}
|
|
payload = {
|
|
"model": self.model,
|
|
"prompt": input_message,
|
|
"stream": False, # 关闭流式传输
|
|
"options": {
|
|
"temperature": 0.7,
|
|
"top_p": 0.9,
|
|
"num_ctx": 20480
|
|
}
|
|
}
|
|
try:
|
|
output = requests.post(url, headers=headers, json=payload)
|
|
output.raise_for_status() # 检查HTTP请求是否成功
|
|
result = output.json()
|
|
return result.get("response", "No response from model.")
|
|
except requests.exceptions.RequestException as e:
|
|
return f"Error calling Ollama API: {e}"
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# 示例提示文本
|
|
ollama = Ollama()
|
|
print("Ollama 服务是否正在运行:", ollama.is_service_running())
|
|
prompt = "请用中文描述机器学习的基本概念。"
|
|
response = ollama.generate_text(prompt)
|
|
print("模型生成的文本:")
|
|
print(response)
|