Flutter AI功能集成插件together_ai_sdk的使用
Flutter AI功能集成插件together_ai_sdk的使用
Together AI Dart Package
Together AI Dart 包提供了一种方便的方式,使用 Dart 与 Together AI API 进行交互。它提供了简单直观的接口,用于生成文本、图像等,支持多种 AI 模型。
功能
- 简单易用的 API 用于生成文本和图像
- 支持多种 AI 模型,包括聊天和图像生成模型
- 与 Together AI API 无缝集成
- 强大的错误处理,带有详细的错误信息
- 使用实体模型的强类型响应
- 基于枚举的模型选择,确保类型安全和代码可读性
安装
在 pubspec.yaml
文件中添加以下依赖项:
dependencies:
together_ai_sdk: ^2.0.2
然后运行 dart pub get
来获取包。
使用
首先,在 Dart 代码中导入包:
import 'package:together_ai_sdk/together_ai_sdk.dart';
安全声明
⚠️ 重要:API 密钥安全 ⚠️
- 永远不要在客户端代码中暴露你的 API 密钥。
TogetherAISdk
的初始化不应直接在分发给最终用户的移动或 Web 应用程序中进行。 - 使用环境变量 存储 API 密钥以进行开发和测试。永远不要将这些密钥提交到版本控制系统中。
初始化 Together AI SDK
创建一个 TogetherAISdk
类的实例,并传入你的 API 密钥和所需的模型:
final togetherAI = TogetherAISdk('YOUR_API_KEY');
生成聊天
使用 chatCompletion
方法生成文本:
final chatResponse = await togetherAI.chatCompletion([
{'role': 'system', 'content': 'You are a helpful'},
{'role': 'user', 'content': 'Once upon a'},
], ChatModel.qwen15Chat72B);
print(chatResponse);
使用流生成聊天
使用 streamResponse
方法生成流:
final chatResponse = await togetherAI.streamResponse([
{'role': 'system', 'content': 'You are a helpful AI assistant'},
{'role': 'user', 'content': 'Tell me a cyberpunk story'},
], ChatModel.qwen15Chat72B);
print(chatResponse);
使用视觉模型生成聊天
使用 visionChatCompletion
方法生成文本:
String imagePath = '/path/to/your_image_name.jpeg';
// 将图像转换为 base64
String base64ImageUrl = await imageToBase64(imagePath);
// 消息对象是一个包含角色和内容键的映射列表
final messages = [
{'role': 'system', 'content': 'You are a helpful AI'},
{
'role': 'user',
'content': [
{'type': 'text', 'text': 'What\'s in this image?'},
{
'type': 'image_url',
'image_url': {'url': base64ImageUrl}
}
]
},
];
// 请使用 ChatVision 模型
// LlamaVFree 是免费模型之一
final chatVisionResponse = await togetherAI.visionChatCompletion(
messages, ChatVisionModel.llama3290BV);
print(chatVisionResponse);
生成文本
使用 textCompletion
方法生成文本:
final textResponse = await togetherAI.textCompletion(
'Once upon a', LanguageModel.qwen1572B);
print(textResponse);
简单对话记忆类
使用 ConversationBufferWindowMemory
或 ConversationBufferMemory
类来管理对话历史:
ConversationMemory memory = ConversationBufferWindowMemory(4);
memory.addMessage(chatResponse.choices[0].message);
print(memory.getMessages());
// 输出示例:
// [{role: assistant, content: Diverse, multicultural, modern, cosmopolitan, city-state, financial hub, green spaces, food paradise, vibrant nightlife, 狮城。}]
生成图像
使用 imageGeneration
方法生成图像:
final imageResponse = await togetherAI.imageGeneration(
'Group of cats', imageModel: ImageModel.stableDiffusionXL1_0);
print(imageResponse);
请注意,目前只支持一个模型:
- stabilityai/stable-diffusion-xl-base-1.0
错误处理
Together AI Dart 包提供了全面的错误处理。如果在 API 请求期间发生错误,将抛出 TogetherAIError
实例。你可以根据错误代码捕获并处理特定类型的错误:
try {
final response = await togetherAI.chatCompletion(...);
// 处理响应
} on TogetherAIError catch (error) {
if (error is AuthenticationError) {
// 处理认证错误
} else if (error is BadRequest) {
// 处理请求错误
} else {
// 处理其他错误
}
}
模型
Together AI Dart 包支持多种聊天和图像生成模型。你可以在 enum_ai_models.dart
文件中找到可用的模型,该文件位于 common
文件夹中。如果你发现有缺失的模型,请告知我。
冲突
如果你的现有代码库中存在冲突,请使用 as
关键字导入 SDK。
贡献
欢迎对 Together AI Dart 包进行贡献!如果你发现任何问题或有改进建议,请在 GitHub 仓库中提交问题或拉取请求。
许可证
此包发布在 MIT 许可证下。
完整示例 Demo
以下是一个完整的示例,展示了如何在 Flutter 项目中使用 together_ai_sdk
插件:
import 'package:flutter/material.dart';
import 'package:together_ai_sdk/together_ai_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final TextEditingController _controller = TextEditingController();
String _response = '';
// 初始化 TogetherAISdk
final TogetherAISdk togetherAI = TogetherAISdk('YOUR_API_KEY');
Future<void> _generateText() async {
try {
final textResponse = await togetherAI.textCompletion(
_controller.text, LanguageModel.qwen1572B);
setState(() {
_response = textResponse.choices[0].text;
});
} catch (e) {
setState(() {
_response = 'Error: $e';
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Together AI Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
TextField(
controller: _controller,
decoration: InputDecoration(labelText: 'Enter prompt'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _generateText,
child: Text('Generate Text'),
),
SizedBox(height: 20),
Text(_response),
],
),
),
);
}
}
更多关于Flutter AI功能集成插件together_ai_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter AI功能集成插件together_ai_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成和使用together_ai_sdk
插件来实现AI功能的示例代码。请注意,实际使用时需要确保你已经在pubspec.yaml
文件中添加了together_ai_sdk
依赖,并且已经运行了flutter pub get
。
1. 添加依赖
首先,在pubspec.yaml
文件中添加together_ai_sdk
依赖:
dependencies:
flutter:
sdk: flutter
together_ai_sdk: ^latest_version # 替换为实际的最新版本号
2. 导入插件
在你的Flutter项目的Dart文件中导入together_ai_sdk
:
import 'package:together_ai_sdk/together_ai_sdk.dart';
3. 初始化插件
在使用之前,通常需要对插件进行初始化。这通常涉及到配置API密钥或其他必要的参数。假设together_ai_sdk
需要初始化API密钥,你可以这样做:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Together AI SDK
await TogetherAiSdk.instance.initialize('your_api_key_here');
runApp(MyApp());
}
4. 使用AI功能
假设together_ai_sdk
提供了一个文本识别功能,你可以这样调用它:
import 'package:flutter/material.dart';
import 'package:together_ai_sdk/together_ai_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await TogetherAiSdk.instance.initialize('your_api_key_here');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter AI Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String recognizedText = '';
Future<void> recognizeText(String imagePath) async {
try {
var result = await TogetherAiSdk.instance.recognizeText(imagePath: imagePath);
setState(() {
recognizedText = result.text;
});
} catch (e) {
print('Error recognizing text: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter AI Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Recognized Text:',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 10),
Text(
recognizedText,
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
// 假设你有一个图像路径
String imagePath = 'path/to/your/image.jpg';
await recognizeText(imagePath);
},
child: Text('Recognize Text from Image'),
),
],
),
),
);
}
}
注意事项
- API密钥:确保你已经获得了有效的API密钥,并将其替换到初始化代码中。
- 错误处理:在实际应用中,你应该添加更多的错误处理逻辑,以处理网络错误、API限制等问题。
- 图像路径:在上面的示例中,
imagePath
是硬编码的。在实际应用中,你可能需要从用户那里获取图像,例如通过文件选择器或相机。 - 插件文档:由于插件的具体API和功能可能会变化,建议查阅最新的together_ai_sdk文档(假设它存在于pub.dev上)以获取最准确的信息。
希望这个示例能帮助你理解如何在Flutter项目中集成和使用together_ai_sdk
插件。如果你有更具体的需求或问题,请随时提问!