Project Icon

react-native-vercel-ai

React Native与Vercel AI跨平台集成方案

react-native-vercel-ai项目实现了Vercel AI包在React Native、Expo、Web和通用应用中的跨平台运行。通过解决React Native fetch API的流式传输限制,该项目使开发者能够在移动端和Web端使用统一的API(如useChat和useCompletion)构建AI聊天功能。项目提供了完整的安装指南、使用示例和API配置说明,适用于需要开发跨平台AI聊天应用的开发者。

react-native-vercel-ai

在 React Native、Expo、Web 和通用应用程序上运行 Vercel AI 包

目前 React Native 的 fetch API 不支持流式传输,而 Vercel AI 默认使用流式传输。这个包使您能够在 React Native 上使用 AI 库,但最佳用法是在 Expo 通用原生应用中使用。

在移动设备上,您可以使用相同的 useChatuseCompletion API 获取非流式响应,而在网页上它会回退到 ai/react

▶️ 使用示例应用程序进行试验,其中包含一个功能完整的应用,内置了一个带有 /chat 路由端点的 next-app 应用,让您可以立即测试这个包。

安装

npm install react-native-vercel-ai

使用方法

1. Metro 设置包导出支持

在您的 metro.config.js 文件中添加以下行以启用包导出。这样我们就可以使用 ai/react 子文件夹。

config.resolver.unstable_enablePackageExports = true;

2. 在 React Native 应用中

在您的 React Native 应用中从 react-native-vercel-ai 导入 useChatuseCompletion。API 与 Vercel AI 库相同。

import { useChat } from 'react-native-vercel-ai';

const { messages, input, handleInputChange, handleSubmit, data, isLoading } =
  useChat({
    api: 'http://localhost:3001/api/chat',
  });

<View>
  {messages.length > 0
    ? messages.map((m) => (
        <Text key={m.id}>
          {m.role === 'user' ? '🧔 用户: ' : '🤖 AI: '}
          {m.content}
        </Text>
      ))
    : null}

  {isLoading && Platform.OS !== 'web' && (
    <View>
      <Text>加载中...</Text>
    </View>
  )}
  <View>
    <TextInput
      value={input}
      placeholder="说点什么..."
      onChangeText={(e) => {
        handleInputChange(Platform.OS === 'web' ? { target: { value: e } } : e);
      }}
    />
    <Button onPress={handleSubmit} title="发送" />
  </View>
</View>;

3. 在您的 API 端点

这个例子使用的是 Next.js API,但您也可以使用其他类型的 API 设置

根据请求是来自原生移动设备还是网页来设置您的响应。

对于网页:

  • 遵循正常的 AI 库网页流程

对于 React Native:

  • 跳过网页流程中的 OpenAIStream 部分。我们不需要流式传输。
  • 将您的提供者流选项设置为 false
  • 返回包含最新消息的响应。
// /api/chat

// ./app/api/chat/route.ts
import OpenAI from 'openai';
import { OpenAIStream, StreamingTextResponse } from 'ai';
import { NextResponse, userAgent } from 'next/server';

// 创建一个 OpenAI API 客户端(适用于边缘)
const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY || '',
});

// 重要!将运行时设置为边缘
export const runtime = 'edge';

export async function POST(req: Request, res: Response) {
  // 从请求体中提取 `prompt`
  const { messages } = await req.json();
  const userAgentData = userAgent(req);
  const isNativeMobile = userAgentData.ua?.includes('Expo');

  if (!isNativeMobile) {
    // 根据提示向 OpenAI 请求流式聊天完成
    const response = await openai.chat.completions.create({
      model: 'gpt-3.5-turbo',
      stream: true,
      messages,
    });
    // 将响应转换为友好的文本流
    const stream = OpenAIStream(response);
    // 用流响应
    return new StreamingTextResponse(stream);
  } else {
    // 根据提示向 OpenAI 请求流式聊天完成
    const response = await openai.chat.completions.create({
      model: 'gpt-3.5-turbo',
      // 为原生设置将提供者流选项设置为 `false`
      stream: false,
      messages: messages,
    });

    return NextResponse.json({ data: response.choices[0].message });
  }
}

贡献

查看贡献指南了解如何为仓库做出贡献以及开发工作流程。

关于作者

Rodrigo Figueroa

在 Twitter 上关注 react-native-vercel-ai 的创建者 Rodrigo Figueroa:@bidah

许可证

MIT


使用 create-react-native-library 创建

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号