小白实操:Python 对接大语言模型,密钥环境变量安全配置教程
本次项目基于 Python 开发 AI 对话交互工具,封装旧式、新式两种大模型例子讲解调用逻辑,同时重点学习环境变量配置,解决密钥明文存储、读取报错等开发常见问题,完整覆盖库安装、代码封装、密钥安全管理、接口调用全流程。文中提及的大模型接口仅作为编程学习案例演示,全程无任何商业推荐、产品推广意图,不引导读者注册、充值及使用对应商用服务,所有实操内容仅用于 Python 接口开发、密钥安全管理的技术学习交流。
一、AI与大模型概念引入
AI 全称人工智能(Artificial Intelligence),简单说:让机器模仿人类的思考、说话、识图、推理等能力,拥有类似人的智能。AI 能高效完成文字、代码类工作,降低开发门槛,辅助学习并可自动化批量处理任务。
大模型是实现通用对话 AI 的主流技术,属于 AI 的细分领域;接下来我们项目用到的旧式、新式都属于大语言模型,无需自行训练,通过 Python 调用已有 API 即可实现智能问答交互。
二、详细步骤讲解(仅教学)
1.进行注册(仅教学)
接口开发通用前置:开发者需在大模型开放平台完成账号实名(仅技术流程演示,不推荐具体平台)

新式:与上述相同,开发者需在大模型开放平台完成账号实名(仅技术流程演示,不推荐具体平台)
此时,我们已经在平台有了账号,但是这并不意味着我们就可以直接获取大模型了,我们还需要创建应用来生成独一无二的鉴权信息,就相当于我们写python爬虫代码时的requests.get(url=,headers=h,data=),每一部分都有它的用处,如果没有特别的信息用于区分,那平台甚至都不知道找谁扣除相应token了,步骤如下:
(1)我的应用,创建新应用,然后自行填写具体内容(仅教学)

(2)点击创建好的应用,查看自己的鉴权信息
旧式:(三条内容都非常重要)

新式:(一条内容,如今大多使用的都是这种)非常重要!非常重要!如下图时一定要将密钥复制下来保存到自己的备忘录

2.自行选择大模型
(1)点击进入控制台

(2)自行选择大模型并获取token(仅教学,本例用Spark Pro演示)(注意:一定要选择刚才你创建好的应用)


到此为止,我们的基础操作都已经完成了,接下来就是如何引用已有的大模型啦~
(3)使用大模型前必找
①查看官方文档:与爬虫一致,要知道某个库的方法就必须去看官方文档中的内容,了解它都能干什么,具体看下图
(讯飞星火中有许多文档,我们看Websocket的,这个在官方中比较常用):

(Kimi看最上部导航栏附件的文档)

②文档内容讲解
1.基础设置层面 :我只有一点要说,其他自行看即可
1.包含接口的输入和输出内容:也就是说我们问的问题以及AI解答的部分都计入了token,像一些深度思考什么的也包含在内,这一点需要注意!

2.请求地址及参数部分等:旧式:有多个请求地址,注意修改与自己的大模型对应的地址等(本文使用Pro)

(4)大模型框架
旧式:有两种方法(着重讲解SDK)
①接口请求:较为繁琐,参数否存多且书写麻烦,不容一点错误(感兴趣的可自行看文档或者在评论区评论,我看见后会回复)
② Python SDK 调用示例:框架在文档中已经明确给出,只需修改一小部分内容即可(下述代码注释)
1.记得关注文档的每一步,这里需要安装PyPI上的包,在python环境中执行命令
pip install --upgrade spark_ai_python
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage
SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat' #必须修改为自己使用的大模型的url
SPARKAI_APP_ID = '' #鉴权信息内容,修改为自己的信息
SPARKAI_API_SECRET = '' #鉴权信息内容,修改为自己的信息
SPARKAI_API_KEY = '' #鉴权信息内容,修改为自己的信息
SPARKAI_DOMAIN = 'generalv3.5' #domain参数,需要修改为自己当前大模型的参数
if __name__ == '__main__':
spark = ChatSparkLLM(
spark_api_url=SPARKAI_URL,
spark_app_id=SPARKAI_APP_ID,
spark_api_key=SPARKAI_API_KEY,
spark_api_secret=SPARKAI_API_SECRET,
spark_llm_domain=SPARKAI_DOMAIN,
streaming=False,
)
messages = [ChatMessage(
role="user",
content='你好呀' #我们向AI发送的问题,可以修改
)]
handler = ChunkPrintHandler()
a = spark.generate([messages], callbacks=[handler])
print(a)
新式大模型:也是看文档中内容(本文用Python):
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["MOONSHOT_API_KEY"], #修改为自己的密钥
base_url="https://api.moonshot.cn/v1",
)
completion = client.chat.completions.create(
model="kimi-k2.7-code",
messages=[
{"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},
{"role": "user", "content": "你好,我叫李雷,1+1等于多少?"} #可修改问题
]
)
print(completion.choices[0].message.content)
(5)在pycharm中编写完整详细代码并使用(注意注释)
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler #文档中给出
from sparkai.core.messages import ChatMessage #文档中给出
import os #文档中给出
from openai import OpenAI #文档中给出
class LlmChat:
def __init__(self):
#讯飞星火 鉴权信息
#系统环境变量,默认值(若环境变量没有该值便使用默认值)
self.sparkai_url=os.getenv('sparkai_url','wss://spark-api.xf-yun.com/v3.1/chat')
self.sparkai_domain='generalv3' #在文档中找到对于的domain
#从电脑系统环境变量里读取
self.sparkai_app_id=os.getenv('sparkai_app_id') #使用环境变量
self.sparkai_app_secret=os.getenv('sparkai_app_secret') #使用环境变量
self.sparkai_app_key=os.getenv('sparkai_app_key') #使用环境变量
#Kimi 鉴权信息
self.moonshot_api_key=os.getenv('moonshot_api_key') #使用环境变量
self.moonshot_base_url="https://api.moonshot.cn/v1"
pass
def spark_chat(self,prompt): #prompt可让问题变得流动,不再单一固定
#初始化平台,拿到大模型
spark_model = ChatSparkLLM(
spark_api_url=self.sparkai_url,
spark_app_id=self.sparkai_app_id,
spark_api_key=self.sparkai_app_key,
spark_api_secret=self.sparkai_app_secret,
spark_llm_domain=self.sparkai_domain,
streaming=False,
)
#组装用户问题
messages = [ChatMessage(
role="user",
content=prompt #将prompt作为所要询问的内容
)]
#调用的模型回答问题
handler = ChunkPrintHandler()
answer = spark_model.generate([messages], callbacks=[handler])
return answer.generations[0][0].text
pass
def kimi_chat(self,prompt):
#获得OpenAi
client = OpenAI(
api_key=self.moonshot_api_key,
base_url=self.moonshot_base_url,
)
# 初始化大模型,拿到大模型
completion = client.chat.completions.create(
model="kimi-k2.7-code",
messages=[
{"role": "system",
"content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},
{"role": "user", "content": prompt}
]
)
#调用模型回答问题
return completion.choices[0].message.content
pass
if __name__ == '__main__':
llmChat=LlmChat()
question="1+1"
res=llmChat.spark_chat(prompt=question)
print(f"讯飞星火的回答:{res}")
res2=llmChat.kimi_chat(prompt=question)
print(f"kimi的回答:{res2}")
结果:
(6)系统环境变量配置
1.搜索:在搜索栏搜索:编辑系统环境变量

2.点击进入,高级,环境变量(N.....),上半部分点击新建,填写变量名变量名点击确定
3.在写代码中使用os.getenv()调用当前系统环境变量(原因:将密码写在代码里非常不安全,若别人需要该代码你给他发过去了,那么他运行的就会使用你的token,所有我们必须要学会使用系统环境变量,该变量仅存在于我们自己的电脑上,不存在泄露问题)
3.总结
本次 Python 对接 AI 交互程序的学习实践,我们从人工智能与大模型的基础概念展开,对比了从零自研模型和调用通用开放接口两种开发路径的成本差异,以两类主流接口作为实操案例,完整走完查阅技术文档、SDK 代码调用、功能封装、系统环境变量配置的全流程。 借助环境变量隔离密钥的实操练习,我们掌握了接口开发里凭证信息的安全防护方法,也理清了依托成熟大模型能力快速开发简易对话程序的实现思路。大家有问题可以评论留言~。
更多推荐
所有评论(0)