如何将Semantic Kernel与Azure OpenAI服务结合

如何将Semantic Kernel与Azure OpenAI服务结合

如何将Semantic Kernel与Azure OpenAI服务结合

Semantic Kernel(SK)是一个开源的AI编排框架,由微软开发,用于构建和集成AI应用。Azure OpenAI服务是微软Azure平台提供的托管式OpenAI API,支持GPT系列模型(如GPT-3.5、GPT-4)。将它们结合使用,可以高效地调用AI模型进行文本生成、对话等任务。以下步骤将指导您完成结合过程,确保结构清晰、易于操作。整个过程基于Python实现(SK也支持C#,但Python更通用)。

前提条件

在开始前,请确保您已满足以下要求:

  • 拥有有效的Azure账户,并已开通Azure OpenAI服务。
  • 在Azure门户中创建了OpenAI资源,获取了以下信息:
    • API密钥(API Key)。
    • 终结点URL(Endpoint URL)。
    • 部署名称(Deployment Name),例如gpt-35-turbo
  • 安装Python 3.8或更高版本。
  • 安装必要的Python包:使用pip安装Semantic Kernel和依赖库。
步骤详解

以下是逐步结合Semantic Kernel与Azure OpenAI服务的流程:

  1. 安装Semantic Kernel SDK

    • 打开终端或命令提示符,运行以下命令安装SK Python包:
      pip install semantic-kernel
      

  2. 配置Azure OpenAI服务

    • 登录Azure门户,导航到您的OpenAI资源。
    • 复制API密钥、终结点URL和部署名称(这些信息在后续代码中需要)。
  3. 初始化Semantic Kernel并添加Azure OpenAI服务

    • 在Python代码中,导入SK库,并创建Kernel实例。
    • 使用AzureChat***pletion类(SK内置的connector)添加Azure OpenAI作为后端服务。
    • 注意:SK调用通常是异步的,因此使用asyncio处理异步操作。
  4. 定义和调用语义函数

    • 创建一个语义函数(semantic function),用于定义提示词(prompt)和任务。
    • 通过Kernel调用该函数,获取Azure OpenAI模型的响应。
  5. 测试和优化

    • 运行代码,验证连接是否成功。
    • 根据需求调整提示词或模型参数(如温度、最大令牌数)。
完整代码示例

以下是一个简单的Python示例,演示如何结合SK与Azure OpenAI服务。代码实现了基本的对话功能:询问天气并获取模型响应。

import asyncio
import semantic_kernel as sk
from semantic_kernel.connectors.ai.open_ai import AzureChat***pletion

async def main():
    # 步骤1: 设置Azure OpenAI配置(替换为您的实际信息)
    deployment_name = "your-deployment-name"  # 例如:"gpt-35-turbo"
    endpoint = "https://your-endpoint.openai.azure.***/"  # 您的终结点URL
    api_key = "your-api-key"  # 您的API密钥

    # 步骤2: 初始化Semantic Kernel
    kernel = sk.Kernel()
    
    # 步骤3: 添加Azure OpenAI服务到Kernel
    kernel.add_chat_service(
        "azure_chat_***pletion", 
        AzureChat***pletion(deployment_name, endpoint, api_key)
    )

    # 步骤4: 定义语义函数(prompt示例)
    prompt = "What's the weather like today in {city}?"
    semantic_function = kernel.create_semantic_function(prompt)

    # 步骤5: 调用函数(异步执行)
    context = kernel.create_new_context()
    context["city"] = "Beijing"  # 设置输入变量
    result = await semantic_function.invoke_async(context=context)
    
    # 输出结果
    print(f"模型响应: {result}")

# 运行异步主函数
if __name__ == "__main__":
    asyncio.run(main())

关键参数说明
  • deployment_name:在Azure OpenAI中创建的模型部署名称,例如gpt-35-turbo
  • endpoint:Azure OpenAI服务的URL,格式为https://<your-resource-name>.openai.azure.***/
  • api_key:从Azure门户获取的API密钥(安全存储,避免泄露)。
  • prompt:定义任务的提示词;{city}是一个变量,可通过上下文动态填充。
  • 异步调用:SK使用异步模式,确保在Python脚本中使用asyncio.run()
注意事项
  • 安全性:API密钥应存储在环境变量或密钥管理服务(如Azure Key Vault)中,避免硬编码在代码里。
  • 错误处理:添加try-except块处理网络错误或API限制,例如:
    try:
        result = await semantic_function.invoke_async(context=context)
    except Exception as e:
        print(f"错误发生: {e}")
    

  • 性能优化:根据需求调整模型参数,例如在create_semantic_function中设置max_tokenstemperature
  • 扩展功能:SK支持插件(plugins)和规划器(planners),可用于构建复杂工作流。参考Semantic Kernel文档深入学习。

通过以上步骤,您可以轻松将Semantic Kernel与Azure OpenAI服务结合,快速开发AI应用。如果遇到问题,请检查Azure配置或升级SK包至最新版本。

转载请说明出处内容投诉
CSS教程网 » 如何将Semantic Kernel与Azure OpenAI服务结合

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买