Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(copilot): add more internal prompts #1537

Merged
merged 1 commit into from
Dec 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions src/components/Copilot.vue
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
<preset-prompt-select v-if="showPresetPrompt" @onChange="handlePresetsChange" />
</transition>
<el-input
ref="publishMsgInput"
type="textarea"
:autosize="{ minRows: 1, maxRows: 4 }"
:rows="1"
Expand Down Expand Up @@ -324,8 +325,18 @@ export default class Copilot extends Vue {

private handlePresetsChange(prompts: string[], promptMap: Record<string, string | VueI18n.TranslateResult>) {
this.currPresetPrompt = prompts[prompts.length - 1]
const sendMessage = promptMap[this.currPresetPrompt]
this.sendMessage(sendMessage as string)
const sendMessage = promptMap[this.currPresetPrompt] as string
if (this.currPresetPrompt === 'emqxLogAnalysis') {
this.currentPublishMsg = sendMessage
const pubMsgRef = this.$refs.publishMsgInput as Vue
if (pubMsgRef) {
const input = pubMsgRef.$el.children[0] as HTMLElement
input.focus()
this.showPresetPrompt = false
}
return
}
this.sendMessage(sendMessage)
this.showPresetPrompt = false
}

Expand Down
38 changes: 35 additions & 3 deletions src/components/PresetPromptSelect.vue
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,24 @@ export default class PresetPromptSelect extends Vue {
label: 'Payload',
children: [
{
value: 'autoFillPayload',
label: this.$tc('common.genPayload'),
value: 'genSimpleIoTPayload',
label: this.$tc('common.genSimpleIoTPayload'),
},
{
value: 'genComplexIoTPayload',
label: this.$tc('common.genComplexIoTPayload'),
},
{
value: 'genConnectedCarPayload',
label: this.$tc('common.genConnectedCarPayload'),
},
{
value: 'genSmartHomePayload',
label: this.$tc('common.genSmartHomePayload'),
},
{
value: 'genIndustrialIoTPayload',
label: this.$tc('common.genIndustrialIoTPayload'),
},
],
},
Expand All @@ -93,6 +109,10 @@ export default class PresetPromptSelect extends Vue {
value: 'emqxRule',
label: this.$t('common.emqxRule'),
},
{
value: 'emqxLogAnalysis',
label: this.$t('common.emqxLogAnalysis'),
},
],
},
{
Expand Down Expand Up @@ -125,6 +145,10 @@ export default class PresetPromptSelect extends Vue {
value: 'connectionInfo',
label: this.$t('common.currentConnectionInfo'),
},
{
value: 'genTestDoc',
label: this.$t('common.genTestDoc'),
},
],
},
]
Expand All @@ -143,14 +167,22 @@ export default class PresetPromptSelect extends Vue {
rust: this.$t('common.promptProgrammingLanguage', ['Rust', '@connection']),
dart: this.$t('common.promptProgrammingLanguage', ['Dart', '@connection']),
erlang: this.$t('common.promptProgrammingLanguage', ['Erlang', '@connection']),
autoFillPayload: this.$t('common.promptAutoFillPayload'),
genSimpleIoTPayload: `${this.$t('common.promptGenSimpleIoTPayload')}${this.$t('common.genPayloadFormat')}`,
genComplexIoTPayload: `${this.$t('common.promptGenComplexIoTPayload')}${this.$t('common.genPayloadFormat')}`,
genConnectedCarPayload: `${this.$t('common.promptGenConnectedCarPayload')}${this.$t('common.genPayloadFormat')}`,
genSmartHomePayload: `${this.$t('common.promptGenSmartHomePayload')}${this.$t('common.genPayloadFormat')}`,
genIndustrialIoTPayload: `${this.$t('common.promptGenIndustrialIoTPayload')}${this.$t(
'common.genPayloadFormat',
)}`,
mqttProtocol: this.$t('common.mqttProtocol'),
mqtt5: this.$t('common.whatIsMQTT5Desc'),
mqttQoS: this.$t('common.mqttQoSDesc'),
mqttRetain: this.$t('common.mqttRetainDesc'),
installEMQX: this.$t('common.installEMQX'),
emqxRule: this.$t('common.promptEmqxRule'),
connectionInfo: this.$t('common.promptCurrentConnectionInfo', ['@connection']),
genTestDoc: this.$t('common.promptGenTestDoc', ['@connection']),
emqxLogAnalysis: this.$t('common.promptEmqxLogAnalysis'),
}
}
private handleChange(vals: string[]) {
Expand Down
117 changes: 104 additions & 13 deletions src/lang/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -342,19 +342,82 @@ export default {
ja: '現在の接続で {0} MQTTクライアントコードを作成する {1},MQTT5を使用する場合は、構成プロパティに注意してください',
hu: 'Hozzon létre {0} MQTT ügyfélkódot az aktuális kapcsolattal {1}, ha MQTT5-öt használ, figyeljen a konfigurációs tulajdonságokra',
},
genPayload: {
zh: '生成测试数据',
en: 'Generate Test Data',
tr: 'Test Verisi Oluştur',
ja: 'テストデータを生成する',
hu: 'Tesztadatok generálása',
},
promptAutoFillPayload: {
zh: '给我一份 MQTT 测试数据,中等复杂结构,包含各种常见的测试场景数据。每次返回一个 JSON payload,不包含任何额外信息。',
en: 'Give me a piece of MQTT test data, medium complex structure, containing various common test scenario data. Return a JSON payload each time, without any additional information.',
tr: 'Bana bir MQTT test verisi ver, orta karmaşık yapı, çeşitli ortak test senaryo verileri içerir. Her seferinde bir JSON veri döndürün, herhangi bir ek bilgi içermez.',
ja: '私にMQTTテストデータを1つ与えてください。中程度の複雑な構造で、さまざまな一般的なテストシナリオデータを含みます。毎回JSONペイロードを返しますが、追加情報は含まれません。',
hu: 'Adj nekem egy MQTT tesztadatot, közepesen összetett szerkezetet, amely különféle gyakori teszteset-adatokat tartalmaz. Minden alkalommal visszaad egy JSON payloadot, bármilyen további információ nélkül.',
genSimpleIoTPayload: {
zh: '生成简单测试数据',
en: 'Generate Simple Test Data',
tr: 'Basit IoT Verisi Oluştur',
ja: 'シンプルなIoTデータを生成する',
hu: 'Egyszerű IoT Adatok Generálása',
},
promptGenSimpleIoTPayload: {
zh: '生成简单结构的 MQTT IoT 测试数据,适合基础测试场景。',
en: 'Generate MQTT IoT test data with a simple structure, suitable for basic testing scenarios.',
tr: 'Temel test senaryoları için basit yapıda MQTT IoT test verileri oluşturun.',
ja: '基本的なテストシナリオに適した、単純な構造のMQTT IoTテストデータを生成します。',
hu: 'Generáljon egyszerű szerkezetű MQTT IoT tesztadatokat, amelyek alapvető tesztelési forgatókönyvekhez alkalmasak.',
},
genComplexIoTPayload: {
zh: '生成复杂测试数据',
en: 'Generate Complex Test Data',
tr: 'Karmaşık IoT Verisi Oluştur',
ja: '複雑なIoTデータを生成する',
hu: 'Bonyolult IoT Adatok Generálása',
},
promptGenComplexIoTPayload: {
zh: '生成具有复杂结构的 MQTT IoT 测试数据,适用于高级测试场景,包括多设备交互和数据分析。',
en: 'Generate MQTT IoT test data with a complex structure, suitable for advanced testing scenarios, including multi-device interactions and data analysis.',
tr: 'Gelişmiş test senaryoları için uygun, çoklu cihaz etkileşimlerini ve veri analizini içeren karmaşık yapıda IoT test verileri oluşturun.',
ja: '複数デバイスの相互作用とデータ分析を含む、高度なテストシナリオに適した複雑な構造のIoTテストデータを生成します。',
hu: 'Generáljon bonyolult szerkezetű IoT tesztadatokat, amelyek alkalmasak fejlett tesztelési forgatókönyvekre, beleértve a több eszköz közötti interakciókat és az adatelemzést.',
},
genConnectedCarPayload: {
zh: '车联网测试数据',
en: 'Connected Car Test Data',
tr: 'Bağlantılı Araba Test Verisi Oluştur',
ja: 'コネクテッドカーのテストデータを生成する',
hu: 'Csatlakoztatott Autó Tesztadatok Generálása',
},
promptGenConnectedCarPayload: {
zh: '生成车联网测试数据,模拟车辆通信、远程监控和数据分析。',
en: 'Generate connected car test data, simulating vehicle communication, remote monitoring, and data analysis.',
tr: 'Araç iletişimi, uzaktan izleme ve veri analizini simüle eden bağlantılı araba test verileri oluşturun.',
ja: '車両通信、リモートモニタリング、データ分析をシミュレートするコネクテッドカーのテストデータを生成します。',
hu: 'Generáljon csatlakoztatott autó tesztadatokat, amelyek az autókommunikációt, a távoli monitorozást és az adatelemzést szimulálják.',
},
genSmartHomePayload: {
zh: '智能家居测试数据',
en: 'Smart Home Test Data',
tr: 'Akıllı Ev Test Verisi Oluştur',
ja: 'スマートホームのテストデータを生成する',
hu: 'Okosotthoni Tesztadatok Generálása',
},
promptGenSmartHomePayload: {
zh: '生成智能家居测试数据,包括设备自动化和用户行为模式。',
en: 'Generate smart home test data, covering device automation and user behavior patterns.',
tr: 'Cihaz otomasyonunu ve kullanıcı davranış modellerini içeren akıllı ev test verileri oluşturun.',
ja: 'デバイスの自動化とユーザー行動パターンを含むスマートホームテストデータを生成します。',
hu: 'Generáljon okosotthoni tesztadatokat, amelyek az eszközautomatizálást és a felhasználói viselkedésmintákat tartalmazzák.',
},
genIndustrialIoTPayload: {
zh: '工业物联网测试数据',
en: 'Industrial IoT Test Data',
tr: 'Endüstriyel IoT Test Verisi Oluştur',
ja: '産業用IoTテストデータを生成する',
hu: 'Ipari IoT Tesztadatok Generálása',
},
promptGenIndustrialIoTPayload: {
zh: '生成适用于工业物联网场景的 MQTT IoT 测试数据,包括机器性能、传感器读数和生产线状态。',
en: 'Generate MQTT IoT test data suitable for industrial IoT scenarios, including machine performance, sensor readings, and production line statuses.',
tr: 'Makine performansını, sensör okumalarını ve üretim hattı durumlarını içeren, endüstriyel IoT senaryoları için uygun MQTT IoT test verileri oluşturun.',
ja: '機械のパフォーマンス、センサーの読み取り、生産ラインの状態を含む、産業用IoTシナリオに適したMQTT IoTテストデータを生成します。',
hu: 'Generáljon MQTT IoT tesztadatokat ipari IoT forgatókönyvekhez, beleértve a gépek teljesítményét, a szenzorok olvasásait és a termelési sor állapotait.',
},
genPayloadFormat: {
zh: '请确保给我一个包含必要信息的完整的 JSON 数据,不需要其它额外信息。这个 JSON 数据应该包含模拟的基础信息,适合基础测试场景,并且可以包含简单的数据结构的介绍。',
en: 'Please make sure to give me a complete JSON data containing the necessary information, no other additional information is required. This JSON data should contain simulated basic information, suitable for basic testing scenarios, and can contain an introduction to simple data structures.',
tr: 'Lütfen bana gerekli bilgileri içeren tam bir JSON verisi verdiğinizden emin olun, başka ek bilgi gerekmez. Bu JSON verileri, temel test senaryoları için uygun, simüle edilmiş temel bilgileri içermeli ve basit veri yapılarına bir giriş içerebilir.',
ja: '必要な情報を含む完全なJSONデータを提供してください。他に追加情報は必要ありません。このJSONデータには、基本的なテストシナリオに適したシミュレートされた基本情報が含まれており、単純なデータ構造の紹介を含む場合があります。',
hu: 'Győződjön meg róla, hogy ad nekem egy teljes JSON adatot, amely tartalmazza a szükséges információkat, más további információ nem szükséges. Ez a JSON adat tartalmazhat szimulált alapinformációkat, amelyek alkalmasak az alapvető tesztelési forgatókönyvekre, és tartalmazhatnak egy bevezetést az egyszerű adatszerkezetekhez.',
},
mqttProtocol: {
zh: 'MQTT 协议是什么',
Expand Down Expand Up @@ -461,4 +524,32 @@ export default {
ja: 'コードがエディタに挿入されました',
hu: 'A kód be lett szúrva a szerkesztőbe',
},
genTestDoc: {
zh: '生成测试文档',
en: 'Generate Test Document',
tr: 'Test Belgesi Oluştur',
ja: 'テストドキュメントを生成する',
hu: 'Teszt dokumentum generálása',
},
promptGenTestDoc: {
zh: '请帮我生成一份 MQTT的测试文档,包含测试的基本信息 {0},并总结一份完整的测试报告',
en: 'Please help me generate a MQTT connection test document, including the basic information of the test {0}, and summarize a complete test report',
tr: 'Lütfen bana MQTT bağlantı testi belgesi oluşturma konusunda yardımcı olun, testin temel bilgilerini içerir {0} ve tam bir test raporu özetleyin',
ja: 'MQTT接続テストドキュメントを生成してください。テストの基本情報を含みます {0} そして完全なテストレポートをまとめる',
hu: 'Segítsen létrehozni egy MQTT kapcsolat teszt dokumentumot, beleértve a teszt alapvető információit {0} és összefoglal egy teljes teszt jelentést',
},
emqxLogAnalysis: {
zh: 'EMQX 日志分析',
en: 'EMQX Log Analysis',
tr: 'EMQX Günlük Analizi',
ja: 'EMQXログ分析',
hu: 'EMQX naplóelemzés',
},
promptEmqxLogAnalysis: {
zh: '请帮我分析一份 EMQX 日志,包含解释告警和错误信息等,并提供解决方案,日志内容:',
en: 'Please help me analyze an EMQX log, including explanations of alerts and error messages, and provide solutions, log content:',
tr: 'Lütfen bana bir EMQX günlüğü analiz etme konusunda yardımcı olun, uyarıların ve hata mesajlarının açıklamalarını içerir ve çözümler sağlar, günlük içeriği:',
ja: 'EMQXログを分析してください。アラートとエラーメッセージの説明を含み、解決策を提供します。ログの内容',
hu: 'Segítsen elemzeni egy EMQX naplót, beleértve az riasztások és hibaüzenetek magyarázatát, és megoldásokat nyújt, naplótartalom:',
},
}
Loading