こんにちは、こんばんは。
Gemini 1.5 Proのウィッシュリストに登録してから、まだかまだかとAPI解放を心待ちにしています。
Gemini 1.5 Proがリリースされたら、100万トークンの入力に対応できるということで、夢が広がります。
Claude 3が出てきて、GPT-4の性能に陰りが見え始めているいま、Gemini Proで我慢して生成AIを使っています。
Next.jsで個人開発ウェブアプリを作成しており、その一環として、ある商品の説明テキストおよび、自分の感想を入れたら、ほどよくライティングしてくれるLangChainのChainsコードを作りました。
生成データをNext.jsで呼び出し、表示するようにしています。
TypeScriptでLangChainのChainsを実装したいという方の助けになれば幸いです。
import { PromptTemplate } from '@langchain/core/prompts'
import { StringOutputParser } from '@langchain/core/output_parsers'
import { ChatGoogleGenerativeAI } from '@langchain/google-genai'
import { HarmBlockThreshold, HarmCategory } from '@google/generative-ai'
require('dotenv').config()
const prompt1 = PromptTemplate.fromTemplate(`
あなたはプロのライターで、ライティングの天才です。次のテキスト元に、商品をおすすめする理由を具体例を用いて説明文以降にライティングしてください。
- 条件: 必ず約700文字の自然な日本語で文章を書いてください
- 条件: 必ずマークダウン形式で出力してください
- 条件: 気合い入れて、深呼吸して、一歩ずつ課題に取り組んでください
- 条件: あなたの回答にバイアスがかかっていないか、固定観念によるものではないかを確認してください
- 条件: ステップバイステップで考えてください
- 条件: 必ずその商品の専門家として答えてください
- 条件: 適度に改行を入れて人間が読みやすい文章にしてください。
- 条件: 自然な日本語の文章で作成してください。
- 条件: 主にテキストを元に、網羅的に文章を作成してください
- 条件: 文章の中にアスタリスク(*)は含めないでください
- 条件: 箇条書きは文章ではないので、100%箇条書きは使わないでください
テキスト: {texts}
説明文:
1. 商品の概要を説明してください。
2. 消費者がその商品を使いたくなるメリットを説明してください。
`)
const prompt2 = PromptTemplate.fromTemplate(`
input内容を、記事タイトルのようにキャッチーに仕上げてください
- 条件1: 日本語の文字数で50文字まで
- 条件2: タイトルは必ず一つだけ作成してください
- 条件3: 文章にアスタリスク(*)は含めないでください
### タイトル作成 ###
{input}
### タイトル作成終了 ###
`)
const model = new ChatGoogleGenerativeAI({
apiKey: process.env.GOOGLE_API_KEY,
modelName: 'gemini-pro',
maxOutputTokens: 2048,
temperature: 0.9,
safetySettings: [
{
category: HarmCategory.HARM_CATEGORY_HARASSMENT,
threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE
}
]
})
const temp1Chain = prompt1.pipe(model).pipe(new StringOutputParser())
const temp2Chain = prompt2.pipe(model).pipe(new StringOutputParser())
export async function LLMgeminiRun(product: string, texts: string) {
try {
console.log('API Call Start: temp1Chain')
const temp1Result = await temp1Chain.invoke({ product, texts })
console.log('API Response: temp1Chain', temp1Result)
console.log('API Call Start: temp2Chain')
const temp2Result = await temp2Chain.invoke({ input: temp1Result })
console.log('API Response: temp2Chain', temp2Result)
return { temp1Result, temp2Result }
} catch (error) {
console.error('API Call Error:', error)
throw error
}
}
参考
https://js.langchain.com/docs/integrations/chat/google_generativeai