大模型 API 接入初探

文章目录

  • 大模型 API 接入初探
    • 一、使用大模型 API 的前置步骤
      • (一)注册账户与获取凭证
      • (二)理解 API 文档
    • 二、三个常用 API
      • (一)列出模型
      • (二)FIM 补全
      • (三)对话补全
    • 三、连续对话
    • 四、计算 tokens 的大小

大模型 API 接入初探

在当今的技术领域,大模型的应用日益广泛,为众多应用赋予了强大的智能能力。若应用需要接入大模型的能力,当下流行的大模型均提供了 API 接入方式,这极大地降低了开发门槛,使开发者能够快速整合大模型的强大功能。

本文将以 DeepSeek 大模型为例(基本是通用的),详细介绍大模型 API 的接入过程,涵盖从前期准备到具体 API 使用,以及连续对话处理和 token 计算等关键方面,为开发者提供全面且实用的指导。

一、使用大模型 API 的前置步骤

(一)注册账户与获取凭证

https://www.deepseek.com/

要接入 DeepSeek 大模型 API,首先需在其官方平台注册账户。注册过程中,务必妥善填写相关信息,确保账户注册成功。注册完成后,获取可用的 tokens,这些 tokens 是使用 API 的关键资源,可能涉及免费额度或充值方式获取。同时,生成 API keys,此为调用 API 的唯一凭证,其重要性不言而喻。需严格保密,切勿告知他人,谨慎保存,因为它直接关联着 tokens 的消耗与计费,关乎使用成本与安全性。

在这里插入图片描述

(二)理解 API 文档

在开始使用 API 之前,深入研读官方文档至关重要。以 DeepSeek 大模型为例,其官方文档(https://api-docs.deepseek.com/zh-cn/api/deepseek-api)详细阐述了 API 的各项说明,包括但不限于模型列表、请求参数、响应格式、使用限制等关键信息。通过仔细研究文档,开发者能够全面了解 API 的功能与规则,为后续的开发工作奠定坚实基础,避免因对 API 不熟悉而导致的开发失误和资源浪费。

二、三个常用 API

**YOUR_API_KEY 替换你刚才获取的 api key **

(一)列出模型

此 API 功能在于列出当前可用的模型列表,并提供各模型的基本信息。这对于开发者而言,能够清晰知晓大模型所提供的模型种类,进而确定哪些模型适用于自身应用场景。例如,通过以下 Python 代码实现:

from openai import OpenAI# 为保持向后兼容性,仍可使用 `https://api.deepseek.com/v1` 作为 `base_url`
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.deepseek.com")
print(client.models.list())

运行结果将展示类似如下信息:

SyncPage[Model](data=[Model(id='deepseek-chat', created=None, object='model', owned_by='deepseek'), Model(id='deepseek-coder', created=None, object='model', owned_by='deepseek')], object='list')

从结果中,我们可以获取模型的 ID、所属者等基本信息,以便在后续的 API 调用中准确选择合适的模型。

(二)FIM 补全

FIM(Fill - In - the - Middle)补全是一项极具创新性的功能,允许开发者设定前缀和后缀,让大模型完善中间的内容,仅设置前缀同样可行。这在文本创作、内容补全、逻辑推理等场景中具有广泛应用价值。以下是一个简单示例:

from openai import OpenAI# 用户需设置 `base_url="https://api.deepseek.com/beta"` 以使用此功能
client = OpenAI(api_key="YOUR_API_KEY",  ### 替换此处的api keybase_url="https://api.deepseek.com/beta"
)
response = client.completions.create(model="deepseek-chat",prompt="从前战争开始了,我们",suffix="哈哈哈",max_tokens=1024
)
# print(response)
print(response.choices[0].text)

运行结果可能为:

就打仗,现在战争开始了,我们就先打仗,再打仗,打完了仗还打仗,直到打不动为止,

需要注意的是,在实际应用中,根据具体需求合理设置前缀、后缀以及 max_tokens 等参数,以获取满意的补全结果。同时,由于不同模型的特点和训练数据差异,FIM 补全的效果可能会有所不同,开发者需要根据实际情况进行调整和优化。

(三)对话补全

对话补全 API 依据输入的上下文,让模型生成相应的对话内容。在这个过程中,涉及三个重要角色:

  • system(系统):system 角色用于设定场景或角色

  • user(用户): user 角色代表用户输入的消息

  • assistant(大模型回复):assistant 角色则是大模型给出的回复

以下是一个具体示例:

from openai import OpenAI# 为保持向后兼容性,仍可使用 `https://api.deepseek.com/v1` 作为 `base_url`
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.deepseek.com")
response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "system", "content": "你是一名资深的地理学家"},{"role": "user", "content": "你好,我想知道中国有几个省"}],max_tokens=1024,temperature=0.7,stream=False
)
print(response)
print(response.choices[0].message.content)

运行结果如下:

ChatCompletion(id='928e783b-7833-458c-a28d-99d270c7f80d', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='你好!中国共有**23个省**。以下是这些省份的列表:\n\n1. 河北省\n2. 山西省\n3. 辽宁省\n4. 吉林省\n5. 黑龙江省\n6. 江苏省\n7. 浙江省\n8. 安徽省\n9. 福建省\n10. 江西省\n11. 山东省\n12. 河南省\n13. 湖北省\n14. 湖南省\n15. 广东省\n16. 海南省\n17. 四川省\n18. 贵州省\n19. 云南省\n20. 陕西省\n21. 甘肃省\n22. 青海省\n23. 台湾省\n\n此外,中国还有**5个自治区**、**4个直辖市**和**2个特别行政区**。如果你对这些地区也感兴趣,我可以为你提供更多信息。', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None))], created=1735481817, model='deepseek-chat', object='chat.completion', service_tier=None, system_fingerprint='fp_f1afce2943', usage=CompletionUsage(completion_tokens=167, prompt_tokens=15, total_tokens=182, completion_tokens_details=None, prompt_tokens_details=None, prompt_cache_hit_tokens=0, prompt_cache_miss_tokens=15))
你好!中国共有**23个省**。以下是这些省份的列表:
1. 河北省
2. 山西省
3. 辽宁省
4. 吉林省
5. 黑龙江省
6. 江苏省
7. 浙江省
8. 安徽省
9. 福建省
10. 江西省
11. 山东大学
12. 河南省
13. 湖北省
14. 湖南省
15. 广东省
16. 海南省
17. 四川省
18. 贵州省
19. 云南省
20. 陕西省
21. 甘肃省
22. 青海省
23. 台湾省
此外,中国还有**5个自治区**、**4个直辖市**和**2个特别行政区**。如果你对这些地区也感兴趣,我可以为你提供更多信息。

在使用对话补全 API 时,合理设置 system 角色的内容能够引导模型生成更符合预期的回复。同时,根据应用需求调整 max_tokens(生成回复的最大 token 数)和 temperature(控制回复的随机性)等参数,可实现更精准、多样化的对话效果。

三、连续对话

在实际应用中,连续对话场景较为常见,且需要模型理解上下文关系。为此,每次 API 调用时,需将之前的对话历史一同传入接口,使大模型能够基于完整的上下文生成连贯、合理的回复。以下是一个连续对话的示例:

先设定了是一个地理学家,问了河南省,然后又问了有几个市? 这里问的几个市,大模型就知道了你问的是河南省

from openai import OpenAI# 为保持向后兼容性,仍可使用 `https://api.deepseek.com/v1` 作为 `base_url`
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.deepseek.com")messages = [{"role": "system", "content": "你是一名资深的地理学家"},{"role": "user", "content": "你好,你知道河南省吗?"}]
conversation_dict = {"previous_messages": messages
}print("问题:" + conversation_dict["previous_messages"][1]["content"])response = client.chat.completions.create(model="deepseek-chat",messages=conversation_dict["previous_messages"],max_tokens=256,temperature=0.7,stream=False
)print("回答:" + response.choices[0].message.content)conversation_dict["previous_messages"].append(response.choices[0].message)newMessage = {"role": "user", "content": "有几个市?"}
conversation_dict["previous_messages"].append(newMessage)print("提问:" + newMessage["content"])response = client.chat.completions.create(model="deepseek-chat",messages=conversation_dict["previous_messages"],max_tokens=256,temperature=0.7,stream=False
)print("回答:" + response.choices[0].message.content)

运行结果如下:

问题:你好,你知道河南省吗?
回答:你好!是的,河南省是中国的一个省份,位于中国中部地区。以下是一些关于河南省的基本信息:
1. **地理位置**:河南省位于中国中部,东接山东、安徽,北接河北、山西,西接陕西,南接湖北。黄河从河南省北部流过,因此得名“河南”,意为“黄河之南”。
2. **省会**:河南省的省会是郑州,郑州也是中国重要的交通枢纽和物流中心。
3. **人口**:河南省是中国人口最多的省份之一,常住人口超过1亿。
4. **历史与文化**:河南省是中国古代文明的发源地之一,历史上曾多次作为中国的政治、经济和文化中心。洛阳、开封、安阳等城市都是中国历史上的重要古都。
5. **经济**:河南省的经济发展较为多元化,农业、工业和服务业都有显著的发展。河南是中国重要的粮食生产基地,尤其是小麦和玉米的产量在全国名列前茅。
6. **旅游资源**:河南省拥有丰富的旅游资源,包括龙门石窟、少林寺、云台山、嵩山等著名景点。
7. **气候**:河南省属于温带季风气候,四季分明,夏季炎热多雨,冬季寒冷干燥。
如果你有关于河南省的更多具体问题,欢迎继续
提问:有几个市?
回答:截至2023年,河南省下辖**17个地级市**,分别是:
1. **郑州市**(省会)  
2. **开封市**  
3. **洛阳市**  
4. **平顶山市**  
5. **安阳市**  
6. **鹤壁市**  
7. **新乡市**  
8. **焦作市**  
9. **濮阳市**  
10. **许昌市**  
11. **漯河市**  
12. **三门峡市**  
13. **南阳市**  
14. **商丘市**  
15. **信阳市**  
16. **周口市**  
17. **驻马店市**  
此外,河南省还设有1个省直辖县级市——**济源市**,但济源市属于县级市,不属于地级市。  
如果你对某个城市有更详细的了解需求,可以告诉我!

在连续对话中,准确管理对话历史至关重要。确保每次传入的对话历史完整且有序,避免信息缺失或错乱,以保证模型能够准确理解上下文,生成符合逻辑的回复。同时,根据对话场景和需求,合理控制 max_tokens 参数,避免生成过长或过短的回复,影响用户体验。

四、计算 tokens 的大小

在使用大模型 API 时,tokens 的消耗直接关系到使用成本。因此,了解每次用户提问所需的 token 数量具有重要意义。DeepSeek 大模型提供了离线计算 token 大小的 Python 程序,开发者可利用此工具进行测试。

计算 token 大小的主要目的在于优化成本控制和资源管理。通过预估每次请求所需的 token 数量,开发者能够在满足需求的前提下,合理控制提问内容,避免不必要的 token 消耗。同时,对于一些对成本较为敏感的应用场景,精确计算 token 大小有助于制定合理的预算和使用策略。

具体使用离线计算程序时,需按照官方文档(https://api-docs.deepseek.com/zh-cn/quick_start/token_usage)提供的方法和步骤进行操作。通常,需要将待计算的文本输入到程序中,程序将根据模型的 token 化规则,输出相应的 token 数量。在实际应用中,开发者可结合具体业务场景,对不同类型的提问进行 token 数量统计分析,总结规律,以便在开发过程中更精准地控制 token 使用。

综上所述,通过对大模型 API 接入的全面解析,包括前置步骤、常用 API 的使用、连续对话处理以及 token 计算等方面,开发者能够更加熟练、高效地将大模型能力整合到应用中,实现智能化功能的提升,同时合理控制成本,为用户提供优质的服务体验。在实际开发过程中,不断探索和优化 API 的使用方式,结合具体业务需求,充分发挥大模型的潜力,将为应用带来更大的价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实时在线翻译谷歌插件

Real - time Translation插件的安装 1、下载插件并解压 2、打开谷歌浏览器,在地址栏输入 “chrome://extensions/” 进入扩展程序页面. 3、开启页面右上角的 “开发者模式”. 4、点击 “加载已解压的扩展程序” 按钮,选择之前解压的文件夹,点…

[数据集][图像分类]常见鱼类分类数据集2w张8类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):7554(剩余1w多为测试集) 分类类别数:…

uniapp开发小程序内嵌h5页面,video视频两边有细小黑色边框

1.问题如图 2.原因分析 是否为设置上述属性呢? 设置了,但是仍然有黑边。经过选中页面元素分析后,判断video元素本身就有这种特点,就是视频资源无法完全铺满元素容器。 3.解决方案

【SpringMVC】SpringMVC 快速入门

通常,Web 应用的工作流程如下: 用户通过浏览器访问前端页面; 前端页面通过异步请求向后端服务器发送数据; 后端采用“表现层-业务层-数据层”三层架构进行开发: 表现层接收页面请求将请求参数传递给业务层业务层访问…

OpenGL变换矩阵和输入控制

在前面的文章当中我们已经成功播放了动画,让我们的角色动了起来,这一切变得比较有意思了起来。不过我们发现,角色虽然说是动了起来,不过只是在不停地原地踏步而已,而且我们也没有办法通过键盘来控制这个角色来进行移动…

【Spring MVC 核心机制】核心组件和工作流程解析

在 Web 应用开发中,处理用户请求的逻辑常常会涉及到路径匹配、请求分发、视图渲染等多个环节。Spring MVC 作为一款强大的 Web 框架,将这些复杂的操作高度抽象化,通过组件协作简化了开发者的工作。 无论是处理表单请求、生成动态页面&#x…

Verilog 过程赋值

关键词:阻塞赋值,非阻塞赋值,并行 过程性赋值是在 initial 或 always 语句块里的赋值,赋值对象是寄存器、整数、实数等类型。 这些变量在被赋值后,其值将保持不变,直到重新被赋予新值。 连续性赋值总是处…

[并发与并行] python如何构建并发管道处理多阶段任务?

文章目录 1. 背景&目标2. show me the code3.知识点4. 总结 1. 背景&目标 背景:一个任务可分为多个阶段(各个阶段非CPU密集型任务,而是属于IO密集型任务),希望每个阶段能够交给各自的线程去执行。 目标:构建支持多并发的…

07 基于OpenAMP的核间通信方案

引言 ZYNQ7020有两个CPU核心,这两个核心可以采用SMP或AMP方式进行调度,当采用AMP方式进行调度时核0和核1可以运行不同的操作系统,如核0运行Linux系统,提供有些复杂的用户交互工作,核1运行实时操作系统,对设…

7.若依参数设置、通知公告、日志管理

参数设置 对系统中的参数进行动态维护。 关闭验证码校验功能 打开页面注册功能 需要修改前端页面代码 通知公告 促进组织内部信息传递 若依只提供了一个半成品,只实现了管理员可以添加通知公告。 日志管理 追踪用户行为和系统运行状况。 登录日志 和操作日志…

基于Docker+模拟器的Appium自动化测试(二)

模拟器的设置 打开“夜神模拟器”的系统设置,切换到“手机与网络”页,选中网络设置下的“开启网络连接”和“开启网络桥接模式”复选框,而后选择“静态IP”单选框,在IP地址中输入“192.168.0.105”,网关等内容不再赘述…

大数据技术-Hadoop(三)Mapreduce的介绍与使用

目录 一、概念和定义 二、WordCount案例 1、WordCountMapper 2、WordCountReducer 3、WordCountDriver 三、序列化 1、为什么序列化 2、为什么不用Java的序列化 3、Hadoop序列化特点: 4、自定义bean对象实现序列化接口(Writable) 4…

【数据仓库】SparkSQL数仓实践

文章目录 集成hive metastoreSQL测试spark-sql 语法SQL执行流程两种数仓架构的选择hive on spark数仓配置经验 spark-sql没有元数据管理功能,只有sql 到RDD的解释翻译功能,所以需要和hive的metastore服务集成在一起使用。 集成hive metastore 在spark安…

基本算法——回归

本节将通过分析能源效率数据集(Tsanas和Xifara,2012)学习基本的回归算法。我们将基 于建筑的结构特点(比如表面、墙体与屋顶面积、高度、紧凑度)研究它们的加热与冷却负载要 求。研究者使用一个模拟器设计了12种不…

V-Express - 一款针对人像视频生成的开源软件

V-Express是腾讯AI Lab开发的一款针对人像视频生成的开源软件。它旨在通过条件性丢弃(Conditional Dropout)技术,实现渐进式训练,以改善使用单一图像生成人像视频时的控制信号平衡问题。 在生成过程中,不同的控制信号&…

Java与SQL Server数据库连接的实践与要点

本文还有配套的精品资源,点击获取 简介:Java和SQL Server数据库交互是企业级应用开发中的重要环节。本文详细探讨了使用Java通过JDBC连接到SQL Server数据库的过程,包括加载驱动、建立连接、执行SQL语句、处理异常、资源管理、事务处理和连…

学习记录—正则表达式-基本语法

正则表达式简介-《菜鸟教程》 正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。 正则表达式可以在文本中查找、替换、提取和验证特定的模式。 本期内容将介绍普通字符,特殊…

企业安装加密软件有什么好处?

加密软件为企业的安全提供了很多便利,从以下几点我们看看比较重要的几个优点: 1、数据保护:企业通常拥有大量的商业机密、客户数据、技术文档等敏感信息。加密软件可以对这些信息进行加密处理,防止未经授权的人员访问。即使数据被…

京东供应链创新与实践:应用数据驱动的库存选品和调拨算法提升履约效率

2024 年度总结系列 2024 年 10 月,京东零售供应链技术团队凭借其在库存选品与调拨技术上的创新与实践,荣获运筹与管理学领域的国际顶级奖项 Daniel H. Wagner Prize。本文为您介绍获奖背后的供应链技术创新和落地应用。 00 摘要 在电商行业中&#x…

大数据技术-Hadoop(二)HDFS的介绍与使用

目录 1、HDFS简介 1.1 什么是HDFS 1.2 HDFS的优点 1.3、HDFS的架构 1.3.1、 NameNode 1.3.2、 NameNode的职责 1.3.3、DataNode 1.3.4、 DataNode的职责 1.3.5、Secondary NameNode 1.3.6、Secondary NameNode的职责 2、HDFS的工作原理 2.1、文件存储 2.2 、数据写…