本次项目基于 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 代码调用、功能封装、系统环境变量配置的全流程。 借助环境变量隔离密钥的实操练习,我们掌握了接口开发里凭证信息的安全防护方法,也理清了依托成熟大模型能力快速开发简易对话程序的实现思路。大家有问题可以评论留言~。

更多推荐