jiayongqiang 3 дней назад
Родитель
Сommit
2337f59f0d

+ 4 - 0
agent/readme.md

@@ -15,6 +15,10 @@
 - Body:{"tag_ids": ["2","3"]}
 
 ### 1.3 生成正则表达式接口
+- URL: /api/aitag/admin/v1/generate_reg
+- METHOD:POST
+- Context-Type:application/json
+- Body:{"id": "0196235AA24A459499057D0BA4AEC9BC"}
 
 ## 2. 对下游系统接口
 

+ 15 - 7
agent/src/agent/agent.py

@@ -16,7 +16,8 @@ llm = init_chat_model(
     model=model, 
     api_key=api_key_env_var,
     base_url=base_url,
-    temperature= temperature
+    temperature= temperature,
+    extra_body={"enable_thinking": False}
 )
 
 class Lable(BaseModel):
@@ -88,14 +89,15 @@ async def reflect_check(context: str, labels: list):
 
 class GenerateReg(BaseModel):
     """ 大模型生成的正则表达式 """
-    reg: str = Field(..., description="大模型生成的正则表达式")
+    reg: str = Field(description="大模型生成的正则表达式")
 
 async def generate_reg(tag_info):
+
     prompt = f"""
         你是一名银行信贷业务产业标签打标平台的规则设计专家。你的任务是:仅根据我提供的【标签名称】与【语义定义】,生成一条中文关键词正则规则,用于极短文本字段(投向 / 贷款用途)的第一阶段初筛。
 ###
 【输入】
- 标签名称:{tag_info[1] if tag_info else ''}
+标签名称:{tag_info[1] if tag_info else ''}
  语义定义:{tag_info[2] if tag_info else ''}
 ###
 【数据特征】
@@ -122,19 +124,25 @@ async def generate_reg(tag_info):
 12.关键词应尽量覆盖:
  ● 文本未出现标签名称
  ● 文本未出现核心字面词
- ● 仅通过业务对象 / 场景 / 行为即可识别的情况      
+ ● 仅通过业务对象 / 场景 / 行为即可识别的情况
+###
+【输出要求】
+只输出最终那一条正则表达式
+ 不要解释
+ 不要 JSON
+ 不要换行
+ 可直接入库
+###
     """
 
     agent = create_agent(
         model = llm, 
         response_format=GenerateReg
     )
-    print(prompt)
     response = await agent.ainvoke({
         "messages": [{"role":"system","content": prompt}]
     },context = {})
-    print("to here 2")
-    reg = response["structured_response"]["reg"]
+    reg = response["structured_response"].reg
     return reg
 
 if __name__ == "__main__":

+ 1 - 0
agent/src/agent/api_inner.py

@@ -91,6 +91,7 @@ class GenerateRegRequest(BaseModel):
 
 async def generate_and_update_reg(tag_info):
     reg = await agent.generate_reg(tag_info)
+    reg = reg.replace('))(', ')).*(')  
     dao.execute(
         """UPDATE aitag_tag_info SET reg = %s WHERE id = %s""",
         (reg, tag_info[0])

+ 2 - 1
agent/tests/test_reg.py

@@ -16,4 +16,5 @@ test_cases = [
 pattern = re.compile(regstr, re.VERBOSE)
 
 for t in test_cases:
-    print(f"{t!r}: {'✓' if pattern.match(t) else '✗'}")
+    print(f"{t!r}: {'✓' if pattern.match(t) else '✗'}")
+

+ 1 - 1
agent/tests/test_tagging.py

@@ -3,7 +3,7 @@ import logging
 logging.basicConfig(level=logging.INFO, force=True,format='%(asctime)s - %(levelname)s - %(message)s')
 logging.info("app starting!")
 
-res = requests.post("http://localhost:8080/api/aitag/v1/tagging", json={
+res = requests.post("http://10.192.72.13:9876/api/aitag/v1/tagging", json={
     # "app_id": "test_app",
     # "timestamp": 1234567890,
     # "sign": "test_sign",