Python访问大模型的几种方式
Python访问大模型很方便,也让大家构建复杂的系统更加的灵活。
访问的方式也比较灵活,主要有http api,package api的方式。
这里简单汇总了常用的三种方式,包括ollama的,http api的,openAI的以及dashscope的。
通过Ollama http API
以下代码通过http API访问远程ollama部署的deepseek-r1:7b模型。
由于用的是7B,所以此问题的回答结果不是很靠谱。
我也测过14B,相对靠谱一点点。
也可以通过Ollama package来访问,但我发现这种方式只能访问本地部署的大模型,没有找到访问远程大模型的方法。
import requests
model_name = "deepseek-r1:7b"
contentAction="为了快速落地,我第一时刻跳伞,隐藏在一堆房屋中,中间还淘汰了一个敌人,于是我继续躲在这里。"
contentRule="老六准则:航线末端跳伞,远离航线,不去大的房屋群,淘汰敌人后立刻更换位置。"
prompt = f"""
# Question
以下内容: {contentAction},是否符合老六行为准则: {contentRule}。
"""
base_url="http://192.168.0.118:11434"
endpoint = f"{base_url}/api/generate"
payload = {
"model": model_name,
"prompt": prompt,
"stream": False # 我们不需要流式响应
}
response = requests.post(endpoint, json=payload)
response.raise_for_status()
analysis_result = response.json()["response"]
print(analysis_result)
通过OpenAI
以下代码通过OpenAI访问远程Qwen模型。
相对7B,这个回答靠谱了很多。
from openai import OpenAI
import json
client = OpenAI(
api_key="这里需要替换成自己的API KEY",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
contentAction="为了快速落地,我第一时刻跳伞,隐藏在一堆房屋中,中间还淘汰了一个敌人,于是我继续躲在这里。"
contentRule="老六准则:航线末端跳伞,远离航线,不去大的房屋群,淘汰敌人后立刻更换位置。"
prompt = f"""
# Question
以下内容: {contentAction},是否符合老六行为准则: {contentRule}。
"""
completion = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "system", "content": "你是一个审查员。"},
{"role": "user", "content": prompt},
],
)
data = json.loads(completion.model_dump_json())
analysis_result = data['choices'][0]['message']['content']
print(analysis_result)
通过dashscope访问Qwen
以下代码通过dashscope访问云端Qwen模型。
这个package只能访问Qwen的云端模型。
import dashscope
dashscope.api_key = "这里需要替换成自己的API KEY"
contentAction="为了快速落地,我第一时刻跳伞,隐藏在一堆房屋中,中间还淘汰了一个敌人,于是我继续躲在这里。"
contentRule="老六准则:航线末端跳伞,远离航线,不去大的房屋群,淘汰敌人后立刻更换位置。"
prompt = f"""
# Question
以下内容: {contentAction},是否符合老六行为准则: {contentRule}。
"""
response = dashscope.Generation.call(
model="qwen-max", # 指定模型
prompt=prompt, # 输入提示
parameters={
"max_length": 1024, # 最大生成长度
"temperature": 0.1 # 温度参数,控制随机性
}
)
print(response.output.text)