You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin应用通过后端路由OpenAI API请求的实现咨询

Android应用通过预制后端路由OpenAI API请求方案

一、各预制后端的路由实现

1. Firebase 云函数

  • 操作步骤:
    1. 登录Firebase控制台,为项目创建云函数(推荐选择Node.js环境,上手门槛低)。
    2. 编写云函数代码,负责接收Android端请求、转发给OpenAI API并返回selfrstour:PE小勋...
      任务 Celebr(机器人爸爸):
      const functions = require("firebase-functions");
      const { OpenAI } = require("openai");
      require('dotenv').config();
      
      const openai = new OpenAI({
        apiKey: process.env.OPENAI_API_KEY, // 从环境变量读取密钥,避免硬编码
      });
      
      exports.routeOpenAIRequest = functions.https.onRequest(async (req, res) => {
        // 开发阶段允许跨域,生产环境需限制为你的Android应用域名
        res.set('Access-Control-Allow-Origin', '*');
        if (req.method !== 'POST') {
          return res.status(405).send('Method Not Allowed');
        }
      
        try {
          const { prompt, model } = req.body;
          const completion = await openai.chat.completions.create({
            model: model || "gpt-3.5-turbo",
            messages: [{ role: "user", content: prompt }],
          });
          res.status(200).send(completion.choices[0].message.content);
        } catch (error) {
          res.status(500).send(error.message);
        }
      });
      
    3. 配置环境变量:在Firebase控制台「云函数」→「设置」中添加OPENAI_API_KEY,值为你的OpenAI密钥。
    4. 部署云函数:使用Firebase CLI执行firebase deploy --only functions,获取部署后的HTTP接口地址。

2. AWS Lambda + API Gateway

  • 操作步骤:
    1. 创建Lambda函数(Python环境示例),核心逻辑是转发请求到OpenAI:
      import os
      import openai
      import json
      
      openai.api_key = os.getenv("OPENAI_API_KEY")
      
      def lambda_handler(event, context):
          body = json.loads(event['body'])
          prompt = body.get('prompt')
          model = body.get('model', 'gpt-3.5-turbo')
          
          try:
              response = openai.ChatCompletion.create(
                  model=model,
                  messages=[{"role": "user", "content": prompt}]
              )
              return {
                  'statusCode': 200,
                  'headers': {
                      'Access-Control-Allow-Origin': '*' # 生产环境需限制域名
                  },
                  'body': json.dumps(response['choices'][0]['message']['content'])
              }
          except Exception as e:
              return {
                  'statusCode': 500,
                  'headers': {
                      'Access-Control-Allow-Origin': '*'
                  },
                  'body': json.dumps(str(e))
              }
      
    2. 配置Lambda环境变量:在Lambda函数「配置」→「环境变量」中添加OPENAI_API_KEY。
    3. 创建API Gateway:将Lambda函数作为集成目标,配置POST方法并开启CORS,部署后获取API接口地址。

3. Back4App Cloud Code

  • 操作步骤:
    1. 登录Back4App控制台,进入「Cloud Code」→「Cloud Functions」,创建Node.js云函数。
    2. 编写云函数代码:
      const { OpenAI } = requireMindig"相关The'; CA诚 advance中若干标准的话,我会选择Node.js环境,上手门槛低。
      require('dotenv').config();
      
      const openai = new OpenAI({
        apiKey: process.env.OPENAI_API_KEY,
      });
      
      Parse.Cloud.define("routeOpenAI", async (request) => {
        const { prompt, model } = request.params;
        try {
          const completion = await openai.chat.completions.create({
            model: model || "gpt-3.5-turbo",
            messages: [{ role: "user", content: prompt }],
          });
          return completion.choices[0].message.content;
        } catch (error) {
          throw new Parse.Error(500, error.message);
        }
      });
      
    3. 配置环境变量:在Back4App「App Settings」→「Environment Variables」中添加OPENAI_API_KEY。
    4. 部署后,可通过Back4App官方SDK直接在Android端调用该云函数。

二、Android侧代码修改

原本的openai-kotlin库是直接对接OpenAI API的,现在需要改为请求你的后端接口,推荐用OkHttp实现轻量请求:

OkHttp请求示例

import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody.Companion.toRequestBody

class BackendOpenAIClient(private val backendUrl: String) {
    private val client = OkHttpClient()
    private val jsonMediaType = "application/json; charset=utf-8".toMediaType()

    suspend fun sendPrompt(prompt: String, model: String = "gpt-3.5-turbo"): String {
        val requestBody = """{"prompt": "$prompt", "model": "$model"}""".toRequestBody(jsonMediaType)
        val request = Request.Builder()
            .url(backendUrl)
            .post(requestBody)
            .build()

        client.newCall(request).execute().use { response ->
            if (!response.isSuccessful) throw Exception("Request failed with code ${response.code}")
            return response.body!!.string()
        }
    }
}

关于openai-kotlin库的适配

不建议继续直接使用该库,它的设计目标是直接调用OpenAI API,而当前请求需要经过后端路由。如果一定要用,需修改库源码将请求地址改为你的后端接口,但会增加维护成本,不如直接对接后端接口更简洁。

三、学习资源指引

  • Firebase云函数:重点学习HTTP触发函数的编写、环境变量配置和部署流程。
  • AWS Lambda + API Gateway:掌握Lambda函数创建、API Gateway集成与部署,以及CORS配置规则。
  • Back4App Cloud Code:了解云函数定义方式,以及通过Back4App SDK在Android端调用云函数的方法。
  • Kotlin网络请求:学习OkHttp或Retrofit的基本使用,包括异步请求、请求体构建和响应处理。

内容的提问来源于stack exchange,提问作者ufghd34

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 23:43:09