feat: add support for Claude LLM integration across multiple modules
- Introduced `useClaude` option in `AnalysisPipelineOptions` to toggle Claude LLM usage. - Updated `processProductChunk` and `analyzeProducts` functions to accept and handle `useClaude` parameter. - Modified argument parsing in various scripts (`bestsellers-by-category`, `mid-range-sellers-by-category`, `top-monthly-sold-by-category`, etc.) to include `--claude` flag. - Enhanced `analyzeProductsInternal` to differentiate between LLM providers and handle requests to Claude API. - Added error handling for Claude API responses and ensured proper configuration for using Claude. - Updated documentation and usage messages to reflect the new `--claude` flag.
This commit is contained in:
14
src/index.ts
14
src/index.ts
@@ -42,9 +42,11 @@ function parseArgs(): {
|
||||
inputFile: string;
|
||||
outputFile?: string;
|
||||
sellability: SellabilityFilter;
|
||||
useClaude: boolean;
|
||||
} {
|
||||
const args = process.argv.slice(2);
|
||||
const outputFile = readFlagValue(args, "--out", "--output");
|
||||
const useClaude = args.includes("--claude");
|
||||
const inputFile = readInputFileArg(
|
||||
args,
|
||||
"--out",
|
||||
@@ -55,12 +57,12 @@ function parseArgs(): {
|
||||
|
||||
if (!inputFile) {
|
||||
console.error(
|
||||
"Usage: bun run src/index.ts <input.csv|xlsx> [--out results.xlsx|--output results.xlsx] [--sellability available|all]",
|
||||
"Usage: bun run src/index.ts <input.csv|xlsx> [--out results.xlsx|--output results.xlsx] [--sellability available|all] [--claude]",
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
return { inputFile, outputFile, sellability };
|
||||
return { inputFile, outputFile, sellability, useClaude };
|
||||
}
|
||||
|
||||
function readFlagValue(args: string[], ...flags: string[]): string | undefined {
|
||||
@@ -109,9 +111,10 @@ function resolveBaseOutputPath(inputFile: string, outputFile?: string): string {
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const { inputFile, outputFile, sellability } = parseArgs();
|
||||
const { inputFile, outputFile, sellability, useClaude } = parseArgs();
|
||||
|
||||
console.log(`Sellability filter: ${sellability}`);
|
||||
console.log(`LLM provider: ${useClaude ? "claude" : "local"}`);
|
||||
|
||||
console.log("Connecting to Redis...");
|
||||
await connectCache();
|
||||
@@ -144,7 +147,10 @@ async function main() {
|
||||
console.log(
|
||||
`\n=== Input chunk ${chunkIndex + 1}/${productChunks.length} (${chunk.length} products) ===`,
|
||||
);
|
||||
const chunkResults = await processProductChunk(chunk, { sellability });
|
||||
const chunkResults = await processProductChunk(chunk, {
|
||||
sellability,
|
||||
useClaude,
|
||||
});
|
||||
allResults.push(...chunkResults);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user