还是回去吧。今天早晨,收到短信,说是违停了,让挪车。我想了一下,停在路边没违规啊,最近一个月,像打游击一样,多次挪车了。这次,我停在了小区西北门口的路边了,大家都在那停车,无奈又收到短信。我骑摩托车去看了一下,前后停的都有车,满满当当,为啥偏给我发短信,太欺负人了,就不挪。于是骑摩托去图书馆,快走到图书馆时,我有点后悔了,不挪车万一扣分扣钱呢,人家给我发短信,肯定有人家的道理,我不认识前后车主,我怎么保证他们没收到挪车短信呢,或者人家有什么方法不让别人发短信,我也不知道呀,我给系统做什么对呢,我为啥给钱过不去呢。于是,我又掉头,骑摩托车回去了,并安慰自己,挪车是对的,真不想挪车,车停小区内地下停车场不就行了,咱停路边不就是为了省两钱吗。所以,下次收到短信,立马去挪车就行了,别意气用事,免得来回跑走冤枉路。
[149+200]--------底部有张生活照片
【关键词】python、ragflow、选择题、配置文件
描述:现在选择题一次输出5道,第5道题输出不完整,需要处理一下。
开工:
20250626周四时间段:20:28-22:00配置中,把输出问题的max_tokens调大,如下:
图2a-1
注:由1000调到2000,看下成不成。运行效果如下:
图2a-2
注:发现了新问题,数据如下:
-ans: {'answer': '呕吐内容物是什么?###奶液###黄绿色液体###不确定 \n呕吐发生在什么时候?###饭后马上发生###饭后一段时间发生###不确定 \n呕吐持续多久了?###1天内###2-3天###不确定 \n猫咪的精神食欲如何?###精神食欲好###精神食欲下降###不确定 \n最近是否有驱虫或免疫?###有驱虫/免疫###没有驱虫/免疫###不确定'}注:【最近是否有驱虫或免疫?###有驱虫/免疫###没有驱虫/免疫###不确定】这里面的/不需要换成###,想着怎么处理一下。
办法很简单,加个约束,不让它出现/就可以了。
20250626周四时间段:23:09-00:00修改提示词如下:
def pre_question_prompt_choose_fun(input_text, role, prequestion, finish_flag):
# 精简基础问题范围,避免过长文本导致模型处理困难
condensed_prequestion = "\n".join([
line for line in prequestion.split("\n")
if line.strip() and not line.strip().startswith((" ", "\t"))
])[:500] # 限制长度
formatted_prompt = f"""
# 指令说明(严格遵守)
1. 基于用户描述生成至多5个追问问题
2. 用户描述:【{input_text}】
3. 基础问题范围:{condensed_prequestion}
# 输出格式(必须遵守)
• 每个问题格式:问题?###选项1###选项2###不确定
• 至多5个问题连续输出,无空行
• 不要任何额外文本
# 问题生成规则
1. 每个问题提供至多3个具体选项 + "不确定"
2. 选项必须简短(≤10个文字)
3. 问题必须完整(严禁截断)
4. 问题不要标题编号或序号
5. 选项之间不要有“/”
# 特殊处理
• 如果所有相关问题都已问过或无法生成有效问题:【{finish_flag}】
# 立即生成(严格按以下顺序):
问题1?###选项A### 选项B###不确定
问题2?###选项A###选项B###不确定
问题3?###选项A###选项B###不确定
"""
return formatted_prompt
注:这里对选项进行了约束,摘录如下:
5. 选项之间不要有“/”注:运行看下效果,从运行日志看,选项中还是有"/",继续优化,修改提示词如下:
图2a-3
注:再次运行,看下效果,效果如下:
图2a-4
注:虽说不出现斜杠了,但分不出来了,接下来,优化下选项数量。
20250626周四时间段:23:43-00:00修改提示词如下:
图2a-5
注:把数量优化了,强制它不能给出一个选项,运行效果如下:
图2a-6
注:总体效果还可以,先这样,接下来,研究库表与配置文件合并。
描述:现在需要把库表与配置文件合并,用程序处理一下。
开工:
20250627周五时间段:10:02-11:00这个需要先找个测试用例,先看下这个方法:
def get_dynaconf(base_dir:str = "conf",
files:list=['service_conf.yaml',
'app_conf.yaml',
'vision_models_conf.yaml',
'tenant_conf.yaml'],
**kwargs):
"""
获取conf 目录下的配置文件:service_conf.yaml,app_conf.yaml
如果定义了环境变量 RAG_CUSTOM_TAG,则访问此变量目录下的所有配置文件
"""
settings_files=[f"{base_dir}/{f}" for f in files]
custom_tag = os.environ.get('RAG_CUSTOM')
if custom_tag:
dir = Path(base_dir) / custom_tag
if not dir.exists():
raise ValueError(f"{custom_tag=} not valid")
settings_files += glob(f'{dir}/*.yaml')
return Dynaconf(
settings_files=settings_files,
merge_enabled=True, # 启用深度合并
**kwargs
)
注:这是配置文件的融合,问下ai,把tenant_conf.yaml改成从数据库中拿数据,应该怎么写。
20250627周五时间段:10:40-11:00问ai,让其换成从数据库中拿,提问如下:
以下函数是进行配置文件合并的,函数如下:
def get_dynaconf(base_dir:str = "conf",
files:list=['service_conf.yaml',
'app_conf.yaml',
'vision_models_conf.yaml',
'tenant_conf.yaml'],
**kwargs):
"""
获取conf 目录下的配置文件:service_conf.yaml,app_conf.yaml
如果定义了环境变量 RAG_CUSTOM_TAG,则访问此变量目录下的所有配置文件
"""
settings_files=[f"{base_dir}/{f}" for f in files]
custom_tag = os.environ.get('RAG_CUSTOM')
if custom_tag:
dir = Path(base_dir) / custom_tag
if not dir.exists():
raise ValueError(f"{custom_tag=} not valid")
settings_files += glob(f'{dir}/*.yaml')
return Dynaconf(
settings_files=settings_files,
merge_enabled=True, # 启用深度合并
**kwargs
)
以上函数中,配置文件【tenant_conf.yaml】,改为从mysql数据库中拿数据,应该怎么优化这个函数,请给出详细方案。
方案如下:
为了将tenant_conf.yaml改为从MySQL数据库获取数据,我们需要对函数进行重构。以下是详细方案:
移除tenant_conf.yaml文件配置
添加MySQL数据库连接和查询功能
将从数据库获取的配置转换为与Dynaconf兼容的格式
合并数据库配置与其他文件配置
import os
from glob import glob
from pathlib import Path
from dynaconf import Dynaconf
import pymysql
from pymysql.cursors import DictCursor
from typing import Dict, Any
import logging
# 设置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def fetch_tenant_config_from_mysql(host: str, port: int, user: str,
password: str, database: str,
table: str = 'tenant_config') -> Dict[str, Any]:
"""
从MySQL数据库获取租户配置
Args:
host: MySQL主机地址
port: MySQL端口
user: 用户名
password: 密码
database: 数据库名
table: 配置表名(默认为tenant_config)
Returns:
包含配置的字典
"""
try:
connection = pymysql.connect(
host=host,
port=port,
user=user,
password=password,
database=database,
cursorclass=DictCursor
)
with connection.cursor() as cursor:
# 查询最新配置(假设表中有version或update_time字段)
sql = f"SELECT * FROM {table} ORDER BY version DESC LIMIT 1"
cursor.execute(sql)
result = cursor.fetchone()
if not result:
logger.warning("No tenant configuration found in database")
return {}
return result
except pymysql.Error as e:
logger.error(f"Error fetching tenant config from MySQL: {e}")
raise
finally:
if 'connection' in locals() and connection.open:
connection.close()
def get_dynaconf(base_dir: str = "conf",
files: list = ['service_conf.yaml',
'app_conf.yaml',
'vision_models_conf.yaml'],
mysql_config: Dict[str, Any] = None,
**kwargs) -> Dynaconf:
"""
获取配置,合并文件配置和MySQL数据库中的租户配置
Args:
base_dir: 配置文件基础目录
files: 要加载的配置文件列表(不再包含tenant_conf.yaml)
mysql_config: MySQL连接配置字典,包含:
- host: MySQL主机
- port: MySQL端口
- user: 用户名
- password: 密码
- database: 数据库名
- table: 表名(可选,默认为tenant_config)
**kwargs: 传递给Dynaconf的其他参数
Returns:
Dynaconf配置对象
"""
# 1. 加载文件配置
settings_files = [f"{base_dir}/{f}" for f in files]
# 处理自定义标签配置
custom_tag = os.environ.get('RAG_CUSTOM')
if custom_tag:
dir = Path(base_dir) / custom_tag
if not dir.exists():
raise ValueError(f"{custom_tag=} not valid")
settings_files += glob(f'{dir}/*.yaml')
# 2. 从MySQL获取租户配置
tenant_config = {}
if mysql_config:
try:
tenant_config = fetch_tenant_config_from_mysql(
host=mysql_config.get('host'),
port=mysql_config.get('port', 3306),
user=mysql_config.get('user'),
password=mysql_config.get('password'),
database=mysql_config.get('database'),
table=mysql_config.get('table', 'tenant_config')
)
except Exception as e:
logger.error(f"Failed to load tenant config from MySQL: {e}")
raise
# 3. 创建Dynaconf实例
settings = Dynaconf(
settings_files=settings_files,
merge_enabled=True, # 启用深度合并
**kwargs
)
# 4. 合并MySQL配置
if tenant_config:
settings.update(tenant_config)
return settings
注:接下来,按这个代码改下程序。
昨日数据来啦,昨日总收入:772.79块,昨日总播放:496.85万次,软件截图如下:

图2c-1
注:想要全托管运营头条号的联系我,你出账号,我来运营,保你天天有钱花,咨询电话: 17701328814(微信同号),也可以加群先了解一下。

图2c-2
注:个人微信如下,欢迎骚扰。

图2c-3
拍摄于2025年7月6日,20:25:26,带大宝去游乐场玩,当时大宝七岁七个月。仔细想了想挪车事件,收到短信,挪一下就行了,为啥要管别人挪车不挪车呢,为啥要与系统对抗呢,我又黑不了系统,改不了记录,所以,服从就行了,省事,也不会在图书馆里老想这件事。处理其它事也一样,比如:我和媳妇打起来了,最后离婚收场,大宝跟媳妇,二宝跟我,二十年后,我去认大宝,他肯定不认我,他会说:当时,你就是为了所谓的面子,和我妈离婚,这些年你知道我是怎么过的吗,别人欺负我的时候你在哪里,需要一个父亲在我旁边支持我的时候你在哪里。到时,我真解释不了,还有二宝跟着我,天天要妈妈,我怎么回答他,长期得不到妈妈,对孩子的成长也是不利的,再整出个心理疾病,更难弄了。所以,遇事要冷静,事情过后再回忆,发现其实没什么大不了的。

图2d-1
《本文完》