Electron Forge【实战】阿里百炼大模型 —— AI 聊天

获取 apiKey

登录并开通阿里云百炼
https://bailian.console.aliyun.com/#/home

新人有半年免费的使用福利,在模型详情中,可以查看剩余的免费额度
https://bailian.console.aliyun.com/?tab=model#/model-market/detail/qwen-turbo

在下方链接中创建 apiKey
https://bailian.console.aliyun.com/?tab=model#/api-key

安装 OpenAI SDK

TS 复制代码
npm install openai

src/providers/OpenAIProvider.ts

ts 复制代码
import OpenAI from 'openai'

interface ChatMessageProps {
  role: string;
  content: string;
}

interface UniversalChunkProps {
  is_end: boolean;
  result: string;
}

export class OpenAIProvider {
  private client: OpenAI;
  constructor(apiKey: string, baseURL: string) {
    this.client = new OpenAI({
      apiKey,
      baseURL
    })
  }
  async chat(messages: ChatMessageProps[], model: string) {
    const stream = await this.client.chat.completions.create({
      model,
      messages,
      stream: true
    })
    const self = this
    return {
      async *[Symbol.asyncIterator]() {
        for await (const chunk of stream) {
          yield self.transformResponse(chunk)
        }
      }
    }
  }
  protected transformResponse(chunk: OpenAI.Chat.Completions.ChatCompletionChunk): UniversalChunkProps {
    const choice = chunk.choices[0]
    return {
      is_end: choice.finish_reason === 'stop',
      result: choice.delta.content || ''
    }
  }
}

src/providers/createProvider.ts

ts 复制代码
import { QianfanProvider } from "./QianfanProvider";
import { OpenAIProvider } from './OpenAIProvider'

export function createProvider(providerName: string) {

  const providerConfigs = {
    aliyun: {
      apiKey: "换成第一步获取的apiKey",
      baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1",
    }
  };

  // 为了解决类型错误,先进行类型断言,确保可以通过 providerName 访问 providerConfigs
  const providerConfig = (providerConfigs as { [key: string]: any })[providerName];

  switch (providerName) {
    case "qianfan":
      if (!providerConfig.accessKey || !providerConfig.secretKey) {
        throw new Error(
          "缺少千帆API配置:请在设置中配置 accessKey 和 secretKey"
        );
      }
      return new QianfanProvider(
        providerConfig.accessKey,
        providerConfig.secretKey
      );
    case 'aliyun':
      if (!providerConfig.apiKey || !providerConfig.baseUrl) {
        throw new Error('缺少阿里云百炼API配置:请在设置中配置 apiKey 和 baseUrl')
      }
      return new OpenAIProvider(providerConfig.apiKey, providerConfig.baseUrl)
    default:
      throw new Error(`不支持的AI服务提供商: ${providerName}`);
  }
}

其他通用代码见
https://blog.csdn.net/weixin_41192489/article/details/147492144

效果预览


相关推荐
吃好喝好玩好睡好4 小时前
Flutter与Electron在OpenHarmony生态的融合实践:构建下一代跨平台应用
javascript·flutter·electron
吃好喝好玩好睡好10 小时前
OpenHarmony 跨端开发实战:Electron 与 Flutter 的深度融合与性能优化
flutter·性能优化·electron
吃好喝好玩好睡好19 小时前
基于Flutter与OpenHarmony ArkUI组件互通的Electron桌面应用UI优化方案
flutter·ui·electron
吃好喝好玩好睡好1 天前
Flutter/Electron应用无缝适配OpenHarmony:全链路迁移方案与实战
javascript·flutter·electron
吃好喝好玩好睡好1 天前
OpenHarmony+Electron+Flutter:构建轻量化VR/AR跨端交互应用指南
flutter·electron·vr
吃好喝好玩好睡好1 天前
OpenHarmony混合开发:Flutter+Electron实战
javascript·flutter·electron
真上帝的左手2 天前
24. 前端-js框架-Electron
前端·javascript·electron
500842 天前
鸿蒙 Flutter 蓝牙与 IoT 开发进阶:BLE 设备连接、数据交互与设备管理
flutter·华为·electron·wpf·开源鸿蒙
北极象2 天前
Electron + Playwright 一文多发应用架构设计
前端·javascript·electron
500842 天前
鸿蒙 Flutter 插件二次开发:基于开源插件(如 flutter_downloader)适配鸿蒙【实战指南】
flutter·华为·electron·开源·音视频·开源鸿蒙