-
Notifications
You must be signed in to change notification settings - Fork 42
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
generateContent throws 500 Internal Server Error when attempting to ground with VertexAISearch #378
Comments
|
This is happening to me too, using the node sdk GoogleGenerativeAIError: [VertexAI.GoogleGenerativeAIError]: got status: 500 Internal Server Error. {"error":{"code":500,"message":"Internal error encountered.","status":"INTERNAL"}}
at throwErrorIfNotOK (/Users/xxx/Desktop/projects/xxx/node_modules/@google-cloud/vertexai/build/src/functions/post_fetch_processing.js:34:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async generateContent (/Users/xxx/Desktop/projects/xxx/node_modules/@google-cloud/vertexai/build/src/functions/generate_content.js:51:5) import { invariantResponse } from '@epic-web/invariant'
import { Part } from '@google-cloud/vertexai'
import {
ActionFunctionArgs,
json,
unstable_createMemoryUploadHandler,
unstable_parseMultipartFormData,
} from '@remix-run/node'
import { MAX_BRAND_LOGO_UPLOAD_SIZE } from '~/constants/constants'
import { deleteFile, uploadFile } from '~/utils/cloud-storage.server'
import { generativeModelForPdf, parseAndConcatText } from '~/utils/vertex.server'
export async function action(args: ActionFunctionArgs) {
const { request } = args
const formData = await unstable_parseMultipartFormData(
request,
unstable_createMemoryUploadHandler({ maxPartSize: MAX_BRAND_LOGO_UPLOAD_SIZE }),
)
const guidelinesFile = formData.get('pdf') as File
invariantResponse(guidelinesFile, 'Guidelines file is required')
const brandId = formData.get('brandId') as string
invariantResponse(brandId, 'Brand ID is required')
const { uri, fileName } = await uploadFile(parseInt(brandId), guidelinesFile)
console.log('\n', `uri = `, uri, '\n')
const filePart: Part = {
fileData: {
fileUri: uri,
mimeType: 'application/pdf',
},
}
const textPart = {
text: `
You are a very professional document summarization specialist.
Please summarize the given document.`,
}
const vertexRequest = {
contents: [{ role: 'user', parts: [filePart, textPart] }],
}
let resp
try {
resp = await generativeModelForPdf.generateContent(vertexRequest)
} catch (error) {
console.log('\n', `error = `, error, '\n')
throw new Error('Failed to generate content')
}
const contentResponse = resp.response
console.log('Generated content response: ', JSON.stringify(contentResponse))
const concatenatedText = parseAndConcatText(contentResponse)
console.log('\n', `concatenatedText = `, concatenatedText, '\n')
// delete file after analysis
try {
const resp = await deleteFile(fileName)
console.log('\n', `resp = `, resp, '\n')
} catch (error) {
console.log('\n', `failed to delete file ${fileName} `, '\n')
}
return json({ resp: concatenatedText })
} export const generativeModelForPdf = vertexAI.getGenerativeModel({
model: 'gemini-1.5-flash-001',
generationConfig: { maxOutputTokens: 256 },
}) |
Have same problem with very minimal setup. I'm using demo project from Vercel and trying to use it with Gemini. As soon as I enable tools (with @ai/tools from vercel) every request fails with 500. import { createVertex } from "@ai-sdk/google-vertex"
import { convertToCoreMessages, streamText, tool } from "ai"
const vertex = createVertex({
project: process.env.GOOGLE_VERTEX_PROJECT,
location: "us-east1",
})
export const maxDuration = 30
export async function POST(req: Request) {
const { messages } = await req.json()
const result = await streamText({
model: vertex("gemini-1.5-pro"),
messages: convertToCoreMessages(messages),
system: `You are a helpful assistant.`,
// tools: {
// getInformation: tool({
// description: `get information from your knowledge base to answer questions.`,
// parameters: z.object({
// question: z.string().describe("the users question"),
// }),
// execute: async ({ question }) => findRelevantContent(question),
// }),
})
return result.toAIStreamResponse()
} Works with tools commented out, fails if enable tools. |
Cannot reproduce 500 error now. I use the following script and it returns 200
|
Even though the error message didn't point in that direction, it essentially was a permission issue for me. Giving the Service Account who is calling the model the role "Discovery Agent Viewer" fixed the problems. You also get the internal error if the location of the project and the datastore don't match (e.g. europe-west1 + global). @jwilson-tower |
Thank you @SebSchroen! I added the "Discovery Engine Viewer" to the service account and it fixed the issue. |
All requests using the RetrievalTool fail with the following error...
[VertexAI.GoogleGenerativeAIError]: got status: 500 Internal Server Error. {"error":{"code":500,"message":"Internal error encountered.","status":"INTERNAL"}}"
The same requests, or rather requests with the same parameters, work from the console.
Requests using the GoogleSearchRetrievalTool work in the same code but I am specifically looking to ground my responses against my own data set in Vertex AI Search
The text was updated successfully, but these errors were encountered: