LLM大模型API调用本地部署简单教程

前瞻

  调用大模型并本地化部署非代码操作上需要获取API的url地址以及API的key密钥

常见可选的大模型包括:

OpenAI GPT系列

LLaMA (Meta)

Claude (Anthropic)

国内大模型如文心一言、通义千问等

这里以deepseek为例进行演示,同时将获取的全过程进行简要展示


获取API

   我们要获取某一模型的API,首先是可以从官网的提供的API,如deepseek的doc内容中

  本地部署会根据耗费token数量进行一定程度扣费:

但由于deepseek的官网并未为民间公开获取API的key密钥的方式,因此我们可以用以下方法进行获取:

华为云ModelArts

https://console.huaweicloud.com/modelarts/?locale=zh-cn®ion=cn-southwest-2#/model-studio/squarehttps://console.huaweicloud.com/modelarts/?locale=zh-cn®ion=cn-southwest-2#/model-studio/square

选择一种模型进入详细并部署,部署成功后点击左侧在线推理将展示现待使用的模型:

选择这里的调用说明,将会呈现相应的API的url,若未预设API的密钥根据提示先去配置key

若API的url与key皆已获取,可以尝试以下代码验证是否可以正常使用

# coding=utf-8

import requests
import json

if __name__ == '__main__':
    url = "yourURL"  # API地址
    api_key = "yourApiKey"  # 把yourApiKey替换成已获取的API Key 

    # Send request.
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {api_key}'
    }
    data = {
        "model": "DeepSeek-V3",  # 模型名称
        "messages": [
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "你好"}
        ],
        # 是否开启流式推理, 默认为False, 表示不开启流式推理
        "stream": True,
        # 在流式输出时是否展示使用的token数目。只有当stream为True时改参数才会生效。
        # "stream_options": { "include_usage": True },
        # 控制采样随机性的浮点数,值较低时模型更具确定性,值较高时模型更具创造性。"0"表示贪婪取样。默认为0.6。
        "temperature": 0.6
    }
    response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)

    # Print result.
    print(response.status_code)
    print(response.text)

若出现此问题,请检查API的key或是url是否正确。

通义千文中获取deepseekAPI

百炼控制台https://bailian.console.aliyun.com/?spm=a2c4g.11186623.0.0.7fb960e99VtQeN&tab=model#/api-key

首先获取API的密钥key

获取完毕后需要将API密钥配置到环境变量,这里以Windows系统进行演示

使用win+R后输入cmd进入终端,输入以下命令:

# 用您的百炼API Key代替YOUR_DASHSCOPE_API_KEY
setx DASHSCOPE_API_KEY "YOUR_DASHSCOPE_API_KEY"

届时,将YOUR_DASHSCOPE_API_KEY换为自己获取的API密钥。配置完毕

阿里云百炼官方提供了 Python 与 Java 编程语言的 SDK,也提供了与 OpenAI 兼容的调用方式(OpenAI 官方提供了 Python、Node.js、Java、Go 等 SDK)。本文为您介绍如何安装 OpenAI SDK 

通过运行以下命令安装OpenAI Python SDK:

# 如果运行失败,您可以将pip替换成pip3再运行
pip install -U openai

以下将您可以通过 OpenAI SDK 兼容的HTTP方式快速体验DeepSeek模型。

import os
from openai import OpenAI

client = OpenAI(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如何获取API Key:https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

completion = client.chat.completions.create(
    model="deepseek-r1",  # 此处以 deepseek-r1 为例,可按需更换模型名称。
    messages=[
        {'role': 'user', 'content': '9.9和9.11谁大'}
    ]
)

# 通过reasoning_content字段打印思考过程
print("思考过程:")
print(completion.choices[0].message.reasoning_content)

# 通过content字段打印最终答案
print("最终答案:")
print(completion.choices[0].message.content)

这里的url可以直接使用代码中的地址,但API的key需要配置成自己所创设的密钥。这里模型以deepseekR1为例:

返回结果:

思考过程:

嗯,用户问的是9.9和9.11谁大。首先,我需要确认这两个数字的数值到底是多少。表面上看起来都是小数,但可能用户有不同的表示方式需要注意。

首先,9.9应该就是平常的小数,也就是9加9/10,等于9.9。而9.11可能有两种解读:一种是直接的小数,即9加11/100,也就是9.11;另一种可能是版本号或者某种编号,比如软件版本中的9.9和9.11,这时候可能需要按顺序比较,比如9.9之后是9.10,再是9.11,所以9.11会比9.9大。不过通常情况下,数学问题中的数字还是按照数值来比较的,所以应该排除版本号的解释,直接比较数值大小。

...

总结一下,正确的数值比较中,9.9等于9.90,而9.11等于9.11,所以9.90大于9.11,也就是9.9大于9.11。不过为了避免混淆,可能用户需要更详细的步骤解释。

最终答案:
9.9比9.11大。

**详细比较步骤:**

1. **统一小数位数**:将9.9写成9.90,使其与9.11的小数位数一致。
2. **逐位比较**:
   - **整数部分**:两者均为9,相等。
   - **小数部分**:比较0.90(9.9的小数部分)和0.11(9.11的小数部分)。由于0.90 > 0.11,因此9.90 > 9.11。
   
**结论**:9.9的数值大于9.11。

若涉及版本号(如软件版本),通常按顺序排列为9.9 → 9.10 → 9.11,此时9.11较新。但按纯数学数值比较,9.9更大。

常见问题

在调用API若未能成功进行预期效果,则一般会报出以下问题:

1. 400 Bad Request(错误请求)

  • 原因:请求语法错误、参数缺失或格式无效(如JSON解析失败)。

  • 示例

    • 缺少必填字段。

    • 提交的数据类型错误(如传字符串而非数字)。


2. 401 Unauthorized(未授权)

  • 原因:缺少或无效的身份验证凭证(如Token、API Key)。

  • 与403的区别:401表示“未认证”,403表示“已认证但无权访问”。


3. 403 Forbidden(禁止访问)

  • 原因:身份验证通过,但权限不足(如普通用户访问管理员接口)。

  • 常见场景

    • IP被拉黑。

    • 文件/目录权限限制。


4. 404 Not Found(资源不存在)

  • 原因:请求的资源未找到(如URL路径错误、资源已删除)。

  • 注意:有时API故意返回404以隐藏敏感资源(避免暴露403)。


5. 405 Method Not Allowed(方法不允许)

  • 原因:HTTP方法不被支持(如用POST访问只允许GET的接口)。

  • 解决方案:检查API文档,确认支持的请求方法(GET/POST/PUT等)。


6. 406 Not Acceptable(无法接受)

  • 原因:服务器无法返回客户端要求的响应格式(如请求Accept: application/xml,但API仅支持JSON)。


7. 408 Request Timeout(请求超时)

  • 原因:服务器等待请求时间过长(如网络延迟或客户端未及时发送数据)。

  • 常见场景:大文件上传时超时。


8. 409 Conflict(冲突)

  • 原因:请求与服务器当前状态冲突(如重复创建同一资源)。

  • 示例

    • 并发修改同一数据导致版本冲突(如Git合并冲突)。

    • 注册已存在的用户名。


9. 410 Gone(资源已永久删除)

  • 原因:资源曾存在,但已被永久删除(比404更明确)。

  • 与404的区别:410明确告知资源不可恢复,404可能是临时不存在。


10. 413 Payload Too Large(请求体过大)

  • 原因:请求数据超过服务器限制(如上传文件大小超限)。

  • 解决方案:检查服务器的max_body_size配置。


11. 414 URI Too Long(URL过长)

  • 原因:请求的URL超出服务器限制(如GET请求携带过多参数)。

  • 解决方案:改用POST传递参数。


12. 415 Unsupported Media Type(不支持的媒体类型)

  • 原因:请求的Content-Type不被支持(如服务器仅接受JSON,但客户端发送XML)。

  • 示例

    • 未设置Content-Type: application/json


13. 429 Too Many Requests(请求过多)

  • 原因:触发了API的速率限制(Rate Limiting)。

  • 解决方案:降低请求频率或联系API提供商调整配额。


14. 451 Unavailable For Legal Reasons(因法律原因不可用)

  • 原因:因法律要求拒绝访问(如政府审查的内容)。

  • 参考:HTTP标准扩展状态码,源自小说《华氏451度》。

### 本地部署大规模模型 API 的方法 #### 准备工作环境 为了成功地在本地环境中部署大型模型API,需先准备适当的工作环境。这通常涉及安装必要的软件包和依赖项,以及配置适合运行大型模型的硬件资源。对于大多数情况而言,拥有足够的GPU内存是非常重要的。 #### 部署 Deepseek 模型 通过 Cherry Studio 和其他工具的支持,在本地搭建 Deepseek 大规模模型的知识库成为可能[^1]。具体来说: - **获取模型文件**:从官方渠道下载预训练好的 Deepseek R1 版本或其他版本的大规模语言模型。 - **设置服务器端口**:根据实际需求设定服务监听地址与端口号,以便后续能够顺利访该接口。 - **启动 Web Service**:利用 Flask/Django 等 Python web框架创建 RESTful API 接口来提供对外的服务功能;也可以考虑采用 FastAPI 这样的现代异步Web框架提高效率。 ```python from fastapi import FastAPI, Request import uvicorn app = FastAPI() @app.post("/predict/") async def predict(request: Request): data = await request.json() # 假设这里有一个名为 'model' 的全局变量表示加载后的LLM实例 response = model.generate(**data) return {"result": str(response)} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000) ``` #### 调用本地 LLM API 一旦完成了上述步骤,则可以通过 HTTP 请求的方式轻松调用已经部署完毕的大规模模型API。下面给出了一种简单的Python客户端实现方案用于测试目的[^3]。 ```python import requests url = "http://localhost:8000/predict/" payload = { "input_text": "你好啊", } response = requests.post(url, json=payload) print(f"Response Code:{response.status_code}") print(f"Model Output:\n{response.text}") ``` #### 自定义提示词 (Prompt Engineering) 除了基本的功能外,还可以进一步定制化交互体验。比如针对不同应用场景设计专门的输入模板(即所谓的“提示词”),从而让机器更好地理解用户的意图并作出恰当回应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值