DMXAPI 推荐主流大模型&使用代码示例

👑👑👑 LLM小萌新,体验2个是青铜,体验6个是黄金,体验10个上王者!

马上接入 示例代码 报错说明

🎁 API聚合,太方便了

无需逐个注册:不用再一个个注册中国所有大模型厂商开发后台了,有一个DMXAPI账号全搞定。

模型全覆盖:包括国内外超过100个大模型。

轻量使用,社群陪伴:加入LangChain中国社区超过10000名开发者一起成长,90后、00后 LLM开发者都在这里。

我对国内大模型的一点体会:我是本站站长康康。因为一直在折腾数据预处理,会需要在不同的模型测试不同的 Prompt,有了一点点体会。我的整体感觉是:国内大模型能力差距很小,大尺寸模型的能力基本都可以平替 GPT 3.5 了,但和 GPT-4 差距还是挺明显的。做RAG知识库国内模型完全胜任,但要做一些合同分析等,还是需要提升。我手头经常是几个模型一起串起来用,因为有些 prompt 你会发现就是某个模型更容易理解。我的体会是:在你迭代 prompt 前,可以先多换几个模型试试,比在一个模型上死磕 Prompt 好。

推荐学习并测试下面这些模型 模型全称 开发者平台
OpenAI:4o-mini 真香! gpt-4o-mini 开发者平台
OpenAI: 复杂逻辑、数据生成、逻辑判断等,还得上GPT-4。 gpt-4 开发者平台
OpenAI gpt-4o 开发者平台
OpenAI: gpt-4o-mini 出来后就被淘汰了,但可以感受下 gpt-3.5-turbo 开发者平台
Anthropic: 正儿八经的文案工作,可以用 claude 试试,感觉比 OPENAI 正经点。 claude-3-5-sonnet-20240620 开发者平台
Google: 中文环境不推荐用谷歌系模型 gemini-pro 开发者平台
讯飞星火大模型 SparkDesk 开发者平台
讯飞星火大模型 SparkDesk-v3.5 开发者平台
MINIMAX abab6-chat 开发者平台
MINIMAX abab5.5-chat 开发者平台
百川智能: 前搜狗王小川创办,我天天用 百小应APP,搜索方面感觉强一些。 Baichuan2-Turbo 开发者平台
字节跳动豆包大模型 doubao-pro-32k 开发者平台
百度文心一言:看你兴趣咯,百度有免费模型,可以去他们平台拿来玩,但不太聪明。 ERNIE-4.0-8K 开发者平台
智谱:国内一线大模型厂商,绕不开的GLM-4 glm-4 开发者平台
腾讯混元 hunyuan-all 开发者平台
月之暗面KIMI: KIMI家模型我比较下来,确实聪明一丢丢。 moonshot-v1-32k 开发者平台
阿里巴巴千问:Qwen系列很受欢迎 qwen2-72b-instruct 开发者平台
阿里巴巴千问 qwen-turbo 开发者平台
零一万物:李开复老师创业公司 yi-34b-chat-0205 开发者平台
阶跃星辰stepfun: 这家在上海,挺低调的,已经是万亿参数大模型。 step-2-16k-nightly 开发者平台
深度求索deepseek: 也是低调的一家模型厂商。第一个喊出百万Token ¥1元,模型能力一点不虚 deepseek-ai/deepseek-v2-chat 开发者平台
360自研大模型 360GPT_S2_V9 开发者平台

📙 知识普及:大模型 API 接口的速度衡量标准:

RPM (Requests Per Minute)

每分钟可以处理的请求数量。

RPD (Requests Per Day)‌

每天可以处理的请求数量。

IPM (Images Per Minute)‌

每分钟可以处理的图像数量。。

TPM (Tokens Per Minute)

每分钟可以处理的令牌数量。

TPD (Tokens Per Day)

每天可以处理的令牌数量。

响应时间

从请求应用端发送到大模型收到响应的时间。

Python 示例1-1: 普通Post文本对话

# 这是一个 DMXAPI 调用 API 的 Python 例子
import requests
import json

# ------------------------------------------------------------------------------------
#         3秒步接入 DMXAPI :  修改 Key 和 Base url (https://www.dmxapi.com)
# ------------------------------------------------------------------------------------
url = "https://www.dmxapi.com/v1/chat/completions"   # 这里不要用 openai base url,需要改成DMXAPI的中转 https://www.dmxapi.com ,下面是已经改好的。

payload = json.dumps({
   "model": "gpt-4o-mini",  # 这里是你需要访问的模型,改成上面你需要测试的模型名称就可以了。
   "messages": [
      {
         "role": "system",
         "content": "You are a helpful assistant."
      },
      {
         "role": "user",
         "content": "周树人和鲁迅是兄弟吗?"
      }
   ]
})
headers = {
   'Accept': 'application/json',
   'Authorization': 'sk-***********************************************', # 这里放你的 DMXapi key
   'User-Agent': 'DMXAPI/1.0.0 (https://www.dmxapi.com)',  # 这里也改成 DMXAPI 的中转URL https://www.dmxapi.com,已经改好
   'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)

Python 示例1-2: Openai官方库使用例子

# ------------------------------------------------------------------------------------
# 在 Openai官方库 中使用 DMXAPI KEY 的例子
# 需要先 pip install openai
# ------------------------------------------------------------------------------------
from openai import OpenAI

client = OpenAI(
    api_key="sk-********************************************",  # 替换成你的 DMXapi 令牌key
    base_url="https://www.dmxapi.com/v1",  # 需要改成DMXAPI的中转 https://www.dmxapi.com/v1 ,这是已经改好的。
)

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "周树人和鲁迅是兄弟吗?",
        }
    ],
    model="gpt-4o-mini",    #  替换成你先想用的模型全称, 模型全称可以在DMXAPI 模型价格页面找到并复制。
)

print(chat_completion)

Python 示例1-3: 流式输出

import json
import requests

url = "https://www.dmxapi.com/v1/chat/completions"

payload = {
    "model": "gpt-4o-mini",  # 模型名称
    "stream": True,  # 流式输出True开启
    "messages": [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "周树人和鲁迅是兄弟吗?"},
    ],
}
headers = {
    "Accept": "application/json",
    "Authorization": "sk-****************************************************",  # 这里放你的 DMXAPI key
    "User-Agent": "DMXAPI/1.0.0 (https://www.dmxapi.com)",
    "Content-Type": "application/json",
}

response = requests.post(url, headers=headers, json=payload, stream=True)

buffer = ""
for chunk in response.iter_content(chunk_size=None):
    if chunk:
        buffer += chunk.decode("utf-8")
        while "\n" in buffer:
            line, buffer = buffer.split("\n", 1)
            if line.strip() == "":
                continue
            if line.startswith("data: "):
                data_line = line[len("data: ") :].strip()
                if data_line == "[DONE]":
                    break
                else:
                    try:
                        data = json.loads(data_line)
                        delta = data["choices"][0]["delta"]
                        content = delta.get("content", "")
                        print(content, end="", flush=True)
                    except json.JSONDecodeError:
                        # 如果JSON解析失败,可能是数据不完整,继续累积buffer
                        buffer = line + "\n" + buffer
                        break

Python 示例2:Json固定格式输出 代码展示

from pydantic import BaseModel
from openai import OpenAI
from dotenv import load_dotenv
import json
from textwrap import dedent

# 加载环境变量,例如 API key 等配置信息
load_dotenv()

# 设置 OpenAI API 的工厂名称,默认为 "openai"
factory = "openai"

# 初始化 OpenAI 客户端,传入 API key 和 base URL
client = OpenAI(
    api_key="sk-***********************************************",  # 替换为你的 DMXAPI key
    base_url="https://www.dmxapi.com/v1/"   # 这里是DMXAPI的 base url,注意这里需要 /v1/
)

# 定义一个产品信息类,用于解析 API 返回的数据
class ProductInfo(BaseModel):
    product_name: str  # 产品名称,字符串类型
    price: float  # 价格,浮点数类型
    description: str  # 产品描述,字符串类型

# 定义一个提示信息,用于请求模型返回 JSON 格式的产品信息
product_prompt = '''根据给出的产品进行分析,按json格式用中文回答,json format:product_name, price, description.'''

# 获取产品信息的函数,传入用户的问题
def get_product_info(question: str):
    # 使用 OpenAI 客户端进行聊天模型的请求
    completion = client.beta.chat.completions.parse(
        model="gpt-4o-2024-08-06",  # 指定使用的模型
        messages=[
            {"role": "system", "content": dedent(product_prompt)},  # 发送系统消息,设置模型的行为
            {"role": "user", "content": question},  # 发送用户消息,用户提出问题
        ],
        response_format=ProductInfo,  # 指定返回的数据格式为 ProductInfo
    )

    # 返回模型解析的第一个选项的消息结果
    return completion.choices[0].message.parsed

# 初始化一个空的产品信息字典
product_inform = {}

# 定义将解析的结果转换为 JSON 的函数
def transform2JSON(parsed_result):
    # print(parsed_result)  # 打印解析结果

    # 将解析的结果存储到字典中
    product_inform["product_name"] = parsed_result.product_name
    product_inform["price"] = parsed_result.price
    product_inform["description"] = parsed_result.description

    # 将字典转换为 JSON 字符串并返回,ensure_ascii=False 允许中文字符正常显示
    return json.dumps(product_inform, ensure_ascii=False, indent=4)

# 定义用户输入的问题,即一个产品信息的描述
question = "75寸小米电视机"

# 调用函数获取产品信息
result = get_product_info(question)


# 将解析结果转换为 JSON 格式并打印
json_result = transform2JSON(result)
print(json_result)

Python 示例3:embedding代码例子

import openai

# 设置OpenAI API密钥和基础URL
openai.api_key = "sk-***********************************************"  # 替换为你的 DMXAPI key
openai.base_url = "https://www.dmxapi.com/v1/"  #  这里是DMXAPI的 base url,注意这里v1后面需要/,最后的 / 很容易漏掉。

def get_embedding(text):
    response = openai.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )
    return response.data[0].embedding

# 示例文本
text = "这是一个示例文本,用于演示如何获取文本嵌入。"

# 获取文本嵌入
embedding = get_embedding(text)

print(f"文本: {text}")
print(f"嵌入向量维度: {len(embedding)}")
print(f"嵌入向量前5个元素: {embedding[:5]}")

Python 示例4: 2024-09-12 o1-preview 模型代码例子

# 这是一个 DMXAPI 调用 API 的 Python 例子
import requests
import json

# ------------------------------------------------------------------------------------
# 这里不要用 openai base url,需要改成DMXAPI的中转 https://www.dmxapi.com ,下面是已经改好的。
# ------------------------------------------------------------------------------------
url = "https://www.dmxapi.com/v1/chat/completions"

payload = json.dumps({
   "model": "o1-mini-2024-09-12",  # 01系列模型包括:o1-preview、o1-preview-2024-09-12、o1-mini、o1-mini-2024-09-12
   "messages": [
      # ================== 下面 2个参数,在使用 o1-preview 系列模型时,不需要填写 ==================
      #{ 
      #   "role": "system",
      #   "content": "You are a helpful assistant."
      #}, ================== 上面 2个参数,在使用 o1-preview 系列模型时,不需要填写 ==================
      {
         "role": "user",
         "content": "周树人和鲁迅是兄弟吗?"
      }
   ]
})
headers = {
   'Accept': 'application/json',
   'Authorization': 'sk-**********************************************', # 这里放你的 DMXapi key
   'User-Agent': 'DMXAPI/1.0.0 (https://www.dmxapi.com)',  # 这里也改成 DMXAPI 的中转URL https://www.dmxapi.com,已经改好
   'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload,timeout=(10.0, 300.0))  # 01系列模型不支持流式输出,所以要设置 timeout,避免太长回答造成的超时。
print(response.text)

Python 示例5: LangChain使用例子(配合v0.2老版本Langchain)

# ------------------------------------------------------------------------------------
# 在 LangChain 中使用 DMXAPI KEY 的例子
# 需要先 pip install langchain
# ------------------------------------------------------------------------------------
import os

from langchain import OpenAI
from langchain.llms import OpenAI

os.environ["OPENAI_API_KEY"] = (
    "sk-********************************************"  # 替换成你的 DMXapi 令牌key
)
os.environ["OPENAI_API_BASE"] = (
    "https://www.dmxapi.com/v1"  # 这里不要用 openai base url,需要改成DMXAPI的中转 https://www.dmxapi.com ,这是已经改好的。
)


def text():
    llm = OpenAI(temperature=0.9)
    text = "周树人和鲁迅是兄弟吗?"
    print(llm(text))


if __name__ == "__main__":
    text()

Python 示例6: Openai dall-e-3 绘图模型

import http.client
import json

# 定义 API 密钥和基本 URL
API_KEY = "sk-*****************************************************"  # 请替换为你的 DMXAPI 令牌
API_HOST = "www.dmxapi.com"  # API 主机地址
API_ENDPOINT = "/v1/images/generations"  # API 请求路径

# 请求参数
prompt_text = "科技感的店铺门口,店铺名称是DMXAPI"  # 描述生成图像的提示词
model_name = "dall-e-3"  # 使用的 AI 模型
image_size = "1024x1024"  # 图像尺寸 支持 1792x1024, 1024 × 1792, 1024x1024

# 构建请求的 JSON 数据
payload = json.dumps(
    {
        "prompt": prompt_text,
        "n": 1,  # 生产图片数量,修改会报错,默认1就可以。
        "model": model_name,
        "size": image_size,
    }
)

# 定义请求头信息
headers = {
    "Authorization": f"Bearer {API_KEY}",  # 使用变量 API_KEY
    "Accept": "application/json",
    "User-Agent": "DMXAPI/1.0.0 (https://www.dmxapi.com)",
    "Content-Type": "application/json",
}

# 建立 HTTPS 连接
conn = http.client.HTTPSConnection(API_HOST)

# 发送 POST 请求
conn.request("POST", API_ENDPOINT, payload, headers)

# 获取响应并读取数据
res = conn.getresponse()
data = res.read()

# 输出结果
print(data.decode("utf-8"))

Python 示例7: gpt-4o 多模态图片解析示例

import requests

# 将 URL 和 API key 提取为独立变量,便于管理和修改
域名 = "https://www.dmxapi.com/"  # 定义API的基础域名
API_URL = 域名 + "v1/chat/completions"  # 完整的API请求URL
API_KEY = "sk-******************************************************"  # # 请替换为你的 DMXAPI 令牌

# 创建请求数据payload,包括所需的模型和消息内容
payload = {
    "model": "gpt-4o",  # 指定使用的多模态AI模型,除了gpt-4o 也推荐使用 claude-3-5-sonnet系列
    "messages": [
        {
            "role": "system",  # 系统角色信息,可以为空
            "content": "",
        },
        {
            "role": "user",  # 用户角色的消息内容
            "content": [
                {"type": "text", "text": "请解释图片里说了哪些内容"},  # 发送文本消息
                {
                    "type": "image_url",  # 发送图片URL
                    "image_url": {
                        "url": "https://pic.rmb.bdstatic.com/bjh/down/9bfc5b8f8f725467a1e3ccc4d7adc160.png"  # 这是图片URL
                    },
                },
            ],
        },
    ],
    "temperature": 0.1,  # 设置生成文本的随机性,越低输出越有确定性
    "user": "DMXAPI",  # 发送请求的用户标识
}

# 定义HTTP请求头,包括内容类型和身份验证信息
headers = {
    "Content-Type": "application/json",  # 设置内容类型为JSON
    "Authorization": f"Bearer {API_KEY}",  # 使用 f-string 动态插入 API_KEY,进行身份验证
    "User-Agent": f"DMXAPI/1.0.0 ({域名})",  # 自定义的User-Agent,用于识别客户端信息
}

# 发送POST请求,将请求数据和头信息传入API,获取响应
response = requests.post(API_URL, headers=headers, json=payload)

# 输出API的响应内容
print(response.text)

Python 示例8: gpt-4o 函数调用FunctionCall示例

import http.client
import json

# 创建一个 HTTPS 连接对象,连接到指定的域名
conn = http.client.HTTPSConnection("www.dmxapi.com")

# 定义请求体,包含了 GPT-4 模型的参数设置
payload = json.dumps(
    {
        "model": "gpt-4o",  # <--------------------------------------------------- 这类填模型全称
        "max_tokens": 100,
        "temperature": 0.8,
        "stream": False,  # 是否启用流式响应,这里设置为 False,表示不使用流式输出
        "messages": [{"role": "user", "content": "上海今天几度?"}],
        "tools": [  # 定义可用工具,这里定义了一个用于获取天气信息的函数
            {
                "type": "function",  # 工具类型为函数
                "function": {
                    "name": "get_current_weather",  # 函数名称
                    "description": "获得天气信息",  # 函数描述
                    "parameters": {
                        "type": "object",  # 参数类型为对象
                        "properties": {  # 参数属性
                            "location": {
                                "type": "string",  # 地点参数的类型为字符串
                                "description": "城市和州名,例如:上海, 中国",  # 地点参数的描述
                            },
                            "unit": {
                                "type": "string",  # 温度单位类型为字符串
                                "enum": [
                                    "celsius",
                                    "fahrenheit",
                                ],  # 支持的单位有摄氏度和华氏度
                            },
                        },
                        "required": ["location"],  # 必须提供地点参数
                    },
                },
            }
        ],
    }
)

# 设置请求头部信息,指定接受和发送的数据格式
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer sk--***********************************************', # ",  ## <------------------- 这里填DMXAPI令牌
    "Content-Type": "application/json",
}

# 发送 POST 请求到 API
conn.request("POST", "/v1/chat/completions", payload, headers)

# 获取服务器响应
res = conn.getresponse()

# 读取响应数据
data = res.read()

# 打印解码后的响应数据
print(data.decode("utf-8"))

报错状态码说明

状态代码 代码解释
400 Bad Request 请检查你的请求格式,一般都是客户端错误。
401 Unauthorized API密钥验证未通过。你需要验证你的API密钥是否正确。其他原因可能是缺少凭证。
403 令牌分组 XXX 已被禁用 一般是令牌权限问题。新建令牌使用后还报错,需要联系管理员检查。
404 Not Found 请检查 Base Url是否填写正确,尝试带上 /v1 或最后一个斜杠/。
413 Request Entity Too Large prompt可能超长了。请缩短你的prompt,再次尝试,确认短prompt是否可以正常调用。
429 当前分组上游负载已饱和 openai对单个账号有限流,429说明后端某个账号并发太高遇到限流,请继续尝试。
500 Internal Server Error 服务器内部的错误。可能是中转服务器或OpenAI服务器的问题,不是你的问题。请联系管理员处理。
503 当前分组NNN下对于模型 xxxx 无可用渠道 中转平台后端管理的问题,请联系管理员,让他帮你加上这个模型。

👩‍💻 联系 管理员 & 客服

反馈问题 & 提建议 & [企业级服务咨询],请扫我:

微信二维码