curl -X POST "http://localhost:8000/v1/completions" -H "Content-Type: application/json" --data "{
\"model\":\"defog/sqlcoder-70b-alpha\",\"prompt\":\"\\n### Instructions:\\nConvert the following question into a SQL query using the given PostgreSQL database schema.\\n\\nRules:\\n1. **Only output the SQL query**: Do not include any explanations, descriptions, comments, or additional text.\\n2. **The SQL query must be valid and syntactically correct**: It should directly answer the question using the provided schema.\\n3. **For each column in the SELECT statement, use the \AS\ syntax to include Chinese annotations**: Use the \COMMENT\ provided in the schema as the Chinese alias. For example, if the column is \facility_id\, the output should be \facility_id AS '设施ID'\.\\n4. **Ensure that each selected column has a corresponding Chinese alias**: Do not omit any alias.\\n5. **Return only the columns relevant to the question**: Exclude any columns that are not directly requested.\\n\\n### Question:\\n设���ID等于123的设备列表\\n\\n### Schema:\\nCREATE TABLE government_maintenance (facility_id VARCHAR(255) COMMENT '设施ID', type VARCHAR(255) COMMENT '设施类型', installation_date DATE COMMENT '安装日期', lastMaintenance_date DATE COMMENT '最后维护日期', maintenance_content VARCHAR(255) COMMENT '维护描述', maintenance_cost FLOAT(12) COMMENT '维护费用', city VARCHAR(255) COMMENT '城市', district VARCHAR(255) COMMENT '行政区', street VARCHAR(255) COMMENT '街道', detailed_address VARCHAR(255) COMMENT '详细地址') COMMENT = 'c9b2b0b1-bb8b-43d9-9630-75de02efe128';\\n\\n### Response:\\nGenerate the SQL query based on the above question and schema, ensuring that each column in the SELECT statement includes its Chinese alias; Based on your instructions, here is the SQL query I have generated to answer the question '设备ID 等于123的设备列表'\"}"
在使用 vllm server
启动的推理框架进行模型调用时,你可以根据不同的需求和问题,调整多个参数来优化结果的质量和性能。以下是你可以考虑的常用参数:
1. Temperature
- 作用:控制生成文本的多样性。较低的温度(如0.2)会使模型更保守,生成更确定的输出,而较高的温度(如0.8或1.0)会使输出更具创意和多样性。
- 适用场景:如果你希望模型生成稳定、标准的SQL查询,温度设置较低(如0.2或0.3)可能更好;如果希望模型生成更多创新或多样化的输出,则可以适当增大温度。
示例:
"temperature": 0.3
2. Top-p (Nucleus Sampling)
- 作用:限制模型的生成空间,确保生成的文本来自于最有可能的概率分布。
top_p
是控制生成过程中保留的词汇概率的累积值。例如,设置为0.9表示保留累计概率为90%的词汇。 - 适用场景:可以与
temperature
配合使用,使生成的文本更加流畅和自然,同时避免过多的随机性。
示例:
"top_p": 0.9
3. Top-k
- 作用:设置从前K个最可能的词汇中进行采样。较小的
top-k
可以使输出更加集中,较大的top-k
使输出更具多样性。 - 适用场景:通常与
temperature
配合使用,控制生成的随机性。如果你需要更稳定且准确的SQL生成,可以使用较低的top-k
。
示例:
"top_k": 40
4. Max Tokens
- 作用:限制返回的最大令牌数量。控制生成输出的长度。
- 适用场景:如果你的输出超过了模型的限制,可以设置
max_tokens
来确保生成的内容不会被截断。
示例:
"max_tokens": 200
5. Stop Tokens
- 作用:指定一个或多个停止符号,模型生成到这些符号时会停止输出。这对于截断过长的生成结果或确保输出格式符合要求非常有用。
- 适用场景:你可以设置停止符号(如
"SELECT"
或";"
)来确保模型生成的输出是一个完整的SQL查询。
示例:
"stop": [";"]
6. Presence Penalty
- 作用:控制模型是否重复输出相同的词或短语。较高的惩罚值可以减少输出中的重复内容。
- 适用场景:如果你不希望生成重复的SQL部分,可以增加此参数。
示例:
"presence_penalty": 0.6
7. Frequency Penalty
- 作用:控制模型生成的单词是否频繁出现。此值越高,模型会倾向于避免使用已经在上下文中出现过的单词。
- 适用场景:适用于减少重复出现的列名、表名等。
示例:
"frequency_penalty": 0.5
8. Logprobs
- 作用:控制返回生成过程中每个词的概率信息。设置为
logprobs
可以帮助了解生成过程中的决策过程。 - 适用场景:如果你需要检查或分析生成文本的决策过程。
示例:
"logprobs": 5
9. Echo
- 作用:如果设置为
true
,则返回的结果中会包含输入的内容(即请求的prompt
)。 - 适用场景:可以帮助调试,确认模型生成的内容是否符合期望。
示例:
"echo": true
10. Stream
- 作用:控制是否以流模式返回生成的结果。如果设置为
true
,模型会逐步返回生成的内容,而不是一次性返回完整的文本。 - 适用场景:当你希望逐步获得输出结果时,尤其是生成较长的内容时。
示例:
"stream": true
例子:添加参数到你的 curl
请求中
假设你想要优化结果的生成,避免过多的重复,增加多样性,并限制最大输出长度。你可以像这样修改 curl
请求:
curl -X POST "http://localhost:8000/v1/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "defog/sqlcoder-70b-alpha",
"prompt": "\n### Instructions:\nConvert the following question into a SQL query using the given PostgreSQL database schema.\n\nRules:\n1. **Only output the SQL query**: Do not include any explanations, descriptions, comments, or additional text.\n2. **The SQL query must be valid and syntactically correct**: It should directly answer the question using the provided schema.\n3. **For each column in the SELECT statement, use the `AS` syntax to include Chinese annotations**: Use the `COMMENT` provided in the schema as the Chinese alias. For example, if the column is `facility_id`, the output should be `facility_id AS '设施ID'`.\n4. **Ensure that each selected column has a corresponding Chinese alias**: Do not omit any alias.\n5. **Return only the columns relevant to the question**: Exclude any columns that are not directly requested.\n\n### Question:\n设备ID等于123的设备列表\n\n### Schema:\nCREATE TABLE government_maintenance (\n facility_id VARCHAR(255) COMMENT '设施ID', type VARCHAR(255) COMMENT '设施类型', installation_date DATE COMMENT '安装日期', lastMaintenance_date DATE COMMENT '最后维护日期', maintenance_content VARCHAR(255) COMMENT '维护描述', maintenance_cost FLOAT(12) COMMENT '维护费用', city VARCHAR(255) COMMENT '城市', district VARCHAR(255) COMMENT '行政区', street VARCHAR(255) COMMENT '街道', detailed_address VARCHAR(255) COMMENT '详细地址') COMMENT = 'c9b2b0b1-bb8b-43d9-9630-75de02efe128';\n\n### Response:\nGenerate the SQL query based on the above question and schema, ensuring that each column in the SELECT statement includes its Chinese alias; Based on your instructions, here is the SQL query I have generated to answer the question '设备ID 等于123的设备列表'",
"max_tokens": 200,
"temperature": 0.3
}'
总结
你可以通过调整以上的参数来控制模型生成的结果,包括输出的长度、多样性、准确性等。对于你的场景,建议重点调整 max_tokens
、temperature
和 top_p
参数,以确保生成有效且合适的SQL查询。