ChatGPTの回答を取得したい

StudioXを使用しております。

Excelの「繰り返し(各行)」アクティビティを使用し、以下のようなことをしたいと考えております。

  1. A列の質問をChatGPT(https://chat.openai.com)に入力
    → 入力モードが「アプリ/ブラウザと同一」または「ハードウェアイベント」だと入力できるのですが、日本語が上手くいかないので「シミュレート」にすると、入力されなくなってしまいます。。

  2. ChatGPTの回答をB列に書き込む
    → 最新の回答を取得したいのですが、「類似の一致が複数見つかりました。」とエラーが出てしまいます。

ご教示いただけますと幸いです。
よろしくお願いいたします。

こんにちは

この手の自動化は可能であればAPI経由で行った方が安定すると思います。
ブラウザで行うなら

1.入力方式をChromiumAPIにして試してみてください

2.以下の様に最下部のテキストボックスをアンカーにして、最後の回答を選択してください。
その際使用するモードは、厳密セレクターのみとし、セレクターの属性に個別の内容が含まれないようにしてみてください

@Yoichi
ご返信ありがとうございます!

  1. 入力方式をChromiumAPIにしたところ、入力できました!

  2. テキストボックスをアンカーにして最後の回答を選択し、厳選セレクターのみにして「css-selector=~~」を削除すると添付のようにターゲット・アンカー共にズレてしまいました。

こんにちは

一筋縄ではいかないですね。

FindChildrenで以下のフィルターで取得して、後ろから2番目がそれに該当しそうですが、
以下サンプル試してもらえますでしょうか?(あらかじめ回答が出ている状態にしてください)

"<webctrl parentid='__next' tag='DIV' class='flex*' innertext='ChatGPT*'  />"

Sample20230915-1aL.zip (5.2 KB)

@Yoichi
サンプルを作成いただきありがとうございます!

サンプルを試してみたところ、下記エラーが表示されてしまいました。

22.4.3+Branch.master.Sha.926b4e643842c0bd04601053628fabcad850b6c3

ソース: Get Text

メッセージ: インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
パラメーター名:index

例外の型: System.ArgumentOutOfRangeException

RemoteException wrapping System.ArgumentOutOfRangeException: インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
パラメーター名:index
場所 System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
場所 System.SZArrayHelper.get_Item[T](Int32 index)
場所 System.Linq.Enumerable.ElementAt[TSource](IEnumerable1 source, Int32 index) 場所 lambda_method(Closure , ActivityContext ) 場所 Microsoft.VisualBasic.Activities.VisualBasicValue1.Execute(CodeActivityContext context)
場所 System.Activities.CodeActivity1.InternalExecuteInResolutionContext(CodeActivityContext context) 場所 System.Activities.Runtime.ActivityExecutor.ExecuteInResolutionContext[T](ActivityInstance parentInstance, Activity1 expressionActivity)
場所 System.Activities.InArgument1.TryPopulateValue(LocationEnvironment targetEnvironment, ActivityInstance activityInstance, ActivityExecutor executor) 場所 System.Activities.RuntimeArgument.TryPopulateValue(LocationEnvironment targetEnvironment, ActivityInstance targetActivityInstance, ActivityExecutor executor, Object argumentValueOverride, Location resultLocation, Boolean skipFastPath) 場所 System.Activities.ActivityInstance.InternalTryPopulateArgumentValueOrScheduleExpression(RuntimeArgument argument, Int32 nextArgumentIndex, ActivityExecutor executor, IDictionary2 argumentValueOverrides, Location resultLocation, Boolean isDynamicUpdate)
場所 System.Activities.ActivityInstance.ResolveArguments(ActivityExecutor executor, IDictionary`2 argumentValueOverrides, Location resultLocation, Int32 startIndex)
場所 System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)
— 直前に例外がスローされた場所からのスタック トレースの終わり —
場所 UiPath.UIAutomationNext.Activities.NApplicationCard.OnFault(NativeActivityFaultContext faultContext, Exception propagatedException, ActivityInstance propagatedFrom)
場所 System.Activities.Runtime.FaultCallbackWrapper.Invoke(NativeActivityFaultContext faultContext, Exception propagatedException, ActivityInstance propagatedFrom)
場所 System.Activities.Runtime.FaultCallbackWrapper.FaultWorkItem.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)

こんにちは

以下の様に、Chrome上ですでに何かやり取りがある状態で実行開始いただきたいのですが、そのような状態になっていますでしょうか?

@Yoichi
やり取りがある状態になっています!

こんにちは

フィルター条件がうまく合致していないかもしれません。
エラー発生時にchildrenの内容どのようになっていますでしょうか?

image

手元の異なる2つの環境(端末)では動作していますが....アクセス先や何か設定が異なるのかもしれません。

@Yoichi
サンプルを複数回か実行していたらできました!

実際に作っているものに入れてみたところ同じエラーが出てしまい、
childrenの内容は「UiElement[0] { }」となっておりました。
image

こんにちは

フィルターがうまく機能していないようです。サンプルは以下になているかと思いますが、UiExplorer等で実際がどのようになっているかを確認して、それにあわせて修正が必要になると思います。現状のUiExplorerでの取得結果共有可能でしょうか?

"<webctrl parentid='__next' tag='DIV' class='flex*' innertext='ChatGPT*'  />"

@Yoichi

フィルターはこのように設定しているのですが
image

UI Explorerで見るとこのようになっておりました。

取りうるセレクターの属性を確認したいので、右側矢印の部分共有可能でしょうか?

対象は以下の様に選択しています。

@Yoichi
すみません、、、

  1. 子要素を探すで上記エリアを選択
  2. ターゲットのセレクターとフィルターを設定
  3. UI Explorerで開く

1.の段階ではYoichi様と同じように表示されているのですが2.3.と進むと「×検証」となってしまい、何度も試しているのですが昨日アップしたように右側矢印部分が空欄になってしまいます。
EdgeでChatGPTの画面は開いたままにしているのですが、何が原因かわかりますでしょうか?

ChatGPTテスト.zip (87.5 KB)

こんにちは

修正しましたのでこちらをお試しください。

ChatGPTテストv2.zip (91.2 KB)

FindChildren自体の対象範囲を大きくとる必要があります。(例えばQAが表示されている枠全体)
FindChildrenのスコープを子孫要素にする必要があります。

@Yoichi

修正いただきありがとうございます。
試してみたところ、下記エラーが表示されてしまいました。。

子要素を探す 'DIV': このセレクターに対応する UI 要素が見つかりませんでした:
<webctrl css-selector='body&gt;div&gt;div&gt;div&gt;div&gt;div&gt;div&gt;main&gt;div&gt;div&gt;div&gt;div' parentid='__next' tag='DIV'/>

見つかった最も近い一致は次のとおりです:
[67%] <webctrl css-selector='body&gt;div&gt;div' parentid='__next' tag='DIV'/>
[67%] <webctrl css-selector='body&gt;div&gt;div&gt;div' parentid='__next' tag='DIV'/>
[67%] <webctrl css-selector='body&gt;div&gt;div&gt;div&gt;div' parentid='__next' tag='DIV'/>
[67%] <webctrl css-selector='body&gt;div&gt;div&gt;div&gt;div&gt;div' parentid='__next' tag='DIV'/>
[67%] <webctrl css-selector='body&gt;div&gt;div&gt;div&gt;div&gt;div&gt;div' parentid='__next' tag='DIV'/>
[67%] <webctrl css-selector='body&gt;div&gt;div&gt;div&gt;div&gt;div&gt;div&gt;nav&gt;div' parentid='__next' tag='DIV'/>
[67%] <webctrl css-selector='body&gt;div&gt;div&gt;div&gt;div&gt;div&gt;div&gt;nav&gt;div' parentid='__next' tag='DIV'/>
[67%] <webctrl css-selector='body&gt;div&gt;div&gt;div&gt;div&gt;div&gt;div&gt;nav&gt;div&gt;div' parentid='__next' tag='DIV'/>
[67%] <webctrl css-selector='body&gt;div&gt;div&gt;div&gt;div&gt;div&gt;div&gt;nav&gt;div&gt;div&gt;div' parentid='__next' tag='DIV'/>
[67%] <webctrl css-selector='body&gt;div&gt;div&gt;div&gt;div&gt;div&gt;div&gt;nav&gt;div&gt;div&gt;div' parentid='__next' tag='DIV'/>

こちらでいかがでしょうか?

BODY要素から検索をかけています。
応答に時間がかかるので仮で5秒の待機を入れています。
EXCELの保存オプションがオフになっていたので、有効にしています。

ChatGPTテストv3.zip (91.1 KB)

@Yoichi
できました!ありがとうございます!!

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.