如何让PaLM API输出CSV格式结果而非Markdown格式?
问题描述
刚接触PaLM ML API,尝试生成CSV格式的返回结果,但无论如何操作都得到Markdown格式。
示例代码:
const result = await client.generateText({ model: MODEL_NAME, prompt: { text: 'Generate a list of top 10 websites and return results in comma separated value format, not markdown format. Put field names in first row.', format: 'csv', delimiter: ',', quote: '"', }, });
实际输出始终为Markdown表格格式:
| Rank | Website | Alexa Global Rank | |---|---|---| | 1 | Google | 1 | | 2 | YouTube | 2 | | 3 | Facebook | 3 | | 4 | Baidu | 4 | | 5 | Wikipedia | 5 | | 6 | Amazon | 6 | | 7 | Tencent | 7 | | 8 | Twitter | 8 | | 9 | Instagram | 9 | | 10 | Reddit | 10 |
请问是否有办法直接输出CSV格式?还是必须自行将Markdown转换为CSV?
解决方案
1. 明确:PaLM generateText 接口无内置CSV输出参数
你代码里的format、delimiter、quote并不是PaLM API的标准参数,API不会识别这些配置,因此无法通过添加这类参数强制输出CSV。
2. 优化Prompt指令,引导模型输出纯CSV
把prompt写得更明确、有约束性,甚至给出CSV示例,能大幅提升模型输出符合要求格式的概率:
const result = await client.generateText({ model: MODEL_NAME, prompt: { text: `生成全球排名前10的网站列表,仅返回纯CSV文本,不要Markdown格式、不要表格、不要额外说明。 第一行是表头:Rank,Website,Alexa Global Rank 后续每行是用逗号分隔的数据,示例: 1,Google,1 2,YouTube,2` }, });
3. 若仍无法解决,自行转换Markdown表格到CSV
如果模型还是返回Markdown表格,可以用简单的解析函数处理:
function markdownTableToCsv(markdown) { // 分割行并过滤空行 const rows = markdown.split('\n').filter(row => row.trim() !== ''); // 移除分隔线行,处理每行的|分隔符 const csvRows = rows .filter(row => !row.includes('|---')) .map(row => row.replace(/^\|+|\|+$/g, '').split('|').map(cell => cell.trim()).join(',')); return csvRows.join('\n'); } // 使用示例 const markdownOutput = `| Rank | Website | Alexa Global Rank | |---|---|---| | 1 | Google | 1 |`; const csvOutput = markdownTableToCsv(markdownOutput); console.log(csvOutput);
内容的提问来源于stack exchange,提问作者mike hennessy
相关产品推荐
相关产品推荐

