{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "nextjs-generate-text-api-and-component-for-dashscrop-ai-provider",
  "type": "registry:page",
  "title": "NextJS Text Generation API and Component with Dashscope AI Integration",
  "description": "A basic implementation of text generation functionality using Dashscope AI provider. Includes both API endpoint and React component for seamless integration with NextJS applications. Built with Vercel AI SDK.",
  "dependencies": [
    "ai"
  ],
  "files": [
    {
      "path": "src/components/generate-text-demo.tsx",
      "content": "/**\n * generateText compoent\n *\n * @author Sawana Huang\n *\n * @see https://sdk.vercel.ai/cookbook/rsc/generate-text\n *\n * @example use it in your component\n * import GenerateTextDemo from \"@/components/generate-text-demo\";\n *\n * <GenerateTextDemo />\n */\n\"use client\";\n\nimport { cn } from \"@/lib/utils\";\nimport { useState } from \"react\";\n\nimport type { GenerateTextPostSuccessResponse } from \"@/app/api/v1/generate-text/route\";\n\ntype GenerateTextDemoProps = {\n  className?: string;\n};\n\nexport default function GenerateTextDemo({\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & GenerateTextDemoProps) {\n  const [generation, setGeneration] = useState(\"\");\n  const [isLoading, setIsLoading] = useState(false);\n\n  return (\n    <div className={cn(className)} {...props}>\n      <div\n        onClick={async () => {\n          setIsLoading(true);\n\n          try {\n            const response = await fetch(\"/api/v1/generate-text\", {\n              method: \"POST\",\n              body: JSON.stringify({\n                prompt: \"Why is the sky blue?\",\n              }),\n            });\n            const json =\n              (await response.json()) as GenerateTextPostSuccessResponse;\n            setGeneration(json.text);\n          } catch (error) {\n            console.error(\"Error generating text:\", error);\n            setGeneration(\n              \"Unable to generate text at the moment. Please refresh and try again.\",\n            );\n          } finally {\n            setIsLoading(false);\n          }\n        }}\n      >\n        Generate\n      </div>\n\n      {isLoading ? \"Loading...\" : generation}\n    </div>\n  );\n}\n",
      "type": "registry:component"
    },
    {
      "path": "src/app/api/v1/generate-text/route.ts",
      "content": "/**\n * generateText Route\n *\n * @author Sawana Huang\n *\n * @see https://sdk.vercel.ai/docs/ai-sdk-core/generating-text\n * @see https://sdk.vercel.ai/cookbook/rsc/generate-text\n */\nimport { generateText } from \"ai\";\nimport { NextResponse, type NextRequest } from \"next/server\";\n\nimport { sealos } from \"@/lib/ai/providers/sealos\";\n\nexport interface GenerateTextPostRequestBody {\n  prompt: string;\n}\nexport interface GenerateTextPostSuccessResponse {\n  message: string;\n  text: string;\n}\n\nexport async function POST(request: NextRequest) {\n  const { prompt } = (await request.json()) as GenerateTextPostRequestBody;\n\n  const result = await generateText({\n    model: sealos(\"deepseek-chat-0324\"),\n    system: \"You are a helpful assistant.\",\n    prompt: prompt,\n  });\n\n  const text = result.text;\n\n  return NextResponse.json(\n    { message: \"success\", text: text } as GenerateTextPostSuccessResponse,\n    {\n      status: 200,\n      statusText: \"OK\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n    },\n  );\n}\n",
      "type": "registry:page",
      "target": "./app/api/v1/generate-text/route.ts"
    }
  ]
}