実現したいこと
スプレッドシートのA1に質問を書いて、B2にgemini関数を書いて、gasを使って、解答が出るようにしたいです。
発生している問題・分からないこと
正しくない解答が出ます。
該当のソースコード
gas
1function gemini(promptText) { 2 // APIキーを取得する。 3 var apiKey = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY'); 4 5 // リクエストボディを作成する。 6 var requestBody = { 7 "contents": [ 8 { 9 "parts": [ 10 { 11 "text": promptText 12 } 13 ] 14 } 15 ], 16 "generationConfig": { 17 "temperature": 0.9, 18 "topK": 1, 19 "topP": 1, 20 "maxOutputTokens": 2048, 21 "stopSequences": [] 22 } 23 }; 24 25 // リクエストを送信する。 26 var response = UrlFetchApp.fetch('https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=' + apiKey, { 27 method: 'post', 28 contentType: 'application/json', 29 payload: JSON.stringify(requestBody) 30 }); 31 32 // レスポンスをパースする。 33 var responseJson = JSON.parse(response.getContentText()); 34 35 // 生成されたテキストを返す。 36 return responseJson.candidates[0].content.parts[0].text; 37}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
APIKEYを取得しなおしたり、エンドポイントを探したりしました。
補足
特になし
正しくない回答とはどういったものですか?
何か1つ、リクエストとレスポンスデータの内容、
加えて、結果セルに表示される内容を書くと回答が出やすいかと思います。
sk_さん、ありがとうございます。
質問:「http://kotorismile.shop20.makeshop.jp/のURLを読み込んで説明を取得してください」と書くと、
サイトのgeminiでは「これは鳥をテーマにしたオンラインショップに関する記事です。鳥に関連するさまざまな商品について説明しています。このショップでは、携帯電話ケース、ぬいぐるみ、キャンディーなどの商品を販売しています。また、洗面用具やショッピングバッグも販売しています。このウェブサイトは日本を拠点としているようです。
確認したウェブサイト
kotorismile.shop20.makeshop.jp/」と答えが返ってきます。
スプレッドシートの方で同じ質問をすると、
「**URL:** http://kotorismile.shop20.makeshop.jp/
**ウェブサイトの説明:**
**コトリズムile**
**概要:**
* ハンドメイドのアクセサリーや雑貨を販売するオンラインショップ。
**主な製品:**
* 天然石のアクセサリー (ネックレス、イヤリング、ブレスレットなど)
* レジンアクセサリー
* フェルト雑貨
* バッグと財布
* 食器
**特徴:**
* すべてのアイテムが一点もので、手作りされています。
* 天然石やレジンなどの高品質な素材を使用しています。
* 繊細でユニークなデザインが特徴です。
* 季節ごとに新しいコレクションが追加されます。
**その他の特徴:**
* ギフト包装オプションあり
* 日本国内のみ配送
* クレジットカード、銀行振込、または代金引換で支払い可能
* お問い合わせフォームやメールでの問い合わせに対応」と答えが返ってきます。
よろしくお願いいたします。
その回答のどのあたりが正しくないのでしょうか?
また、リクエストとレスポンスも記載されるのが良いと思います。
具体的には、promptText引数として渡される文字列の値、responseJson.candidates[0].content.parts[0].textの値。
当然ですが、回答される方は、あなたの作業内容を知りません。
あなたは、シートのA1,B1と、記載のコードがどのように繋がっているのか説明する必要があります。
質問へのコメントを見る限り、プロンプトには別の指示をされているのではないですか?
必要な情報は自身で選別して、公開するようにされるのがよいです。
sk_さん、ありがとうございます。
上記の回答ではわかりにくいと思うので、今度は「http://kotorismile.shop20.makeshop.jp/のURLを読み込んで概要を取得してください」と質問してみました。
サイトのgeminiでは、
「このURLは鳥をテーマにしたオンラインショップに関する記事です。鳥に関連するさまざまな商品について説明しています。このショップでは、携帯電話ケース、ぬいぐるみ、キャンディーなどの商品を販売しています。また、洗面用具や買い物袋も販売しています。このウェブサイトは日本を拠点としているようです。」と返ってきます。
スプレッドシートのgeminiに質問すると
「**概要**
「Kotorismile」は、日本にあるオンラインショップで、主に韓国の化粧品、スキンケア製品、マスク、アクセサリーを販売しています。」と返ってきます。
「鳥をテーマにしたオンラインショップ」と「韓国の化粧品」では、答えが出ましたとは言えません。
promptText引数は、スプレッドシートのB4に「http://kotorismile.shop20.makeshop.jp/のURLを読み込んで概要を取得してください」と入力し、
responseJson.candidates[0].content.parts[0].textの値は、C4に「=gemini(B4)」と入れて、答えがC4に表示されます。
上司からの指示は、スプレッドシートに
A B
1 A 1
2 B 2
上記の表があったとして、AIに「Aの横の数字は何?」と質問して「1」と返ってきてほしい。
これは、難しそうなので後周りにしています。
と、
A B C
1 URL
上記の表があったとして、Aには「URL」が入っていて、Cに質問を入れて、Bに答えを返してほしい。
AIは無料なら何でも良くて、そんなことができるか調べてほしいと言われて調べています。
できることが解ったら有料のAIにしてもいいそうです。
teratail初心者なもので、うまく質問ができなくて申し訳ありません。
sk_さん、質問の仕方まで教えてもらってありがとうございます。
よろしくお願いいたします。
![guest](/img/icon/icnUserSample.jpg)