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)
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |