六、LLM模块

目前大模型本地化使用越来越方便,

模块

函数(类)

功能

LLM

ct.llm(text, prompt, output_format, task, backend, base_url, api_key, model_name, temperature)

调用大模型执行结构化文本分析任务(如情感分析、关键词提取、分类等)。

6.1 ct.llm()

使用大模型(本地或 API)进行文本分析,从非结构化的文本数据中识别模式、提取关键信息、理解语义,并将其转化为结构化数据以便进一步分析和应用。


ct.llm(text, prompt, output_format, task, backend, base_url, api_key, model_name, temperature)
  • text: 待分析的文本内容

  • task: 预设任务名称,默认为 'sentiment'。

  • prompt: 自定义系统提示语

  • output_format: 自定义输出结构,如 {'label': str, 'score': float}

  • backend: 快捷后端别名: - 'ollama' → http://127.0.0.1:11434/v1 - 'lmstudio' 或 'lms' → http://localhost:1234/v1 - None → 需配合 base_url 使用

  • base_url: 自定义模型服务地址,优先级高于 backend 示例: - 远程:https://dashscope.aliyuncs.com/compatible-mode/v1 - 内网:http://192.168.1.10:11434/v1 - 本地:http://localhost:1234/v1

  • api_key: API 密钥,远程服务必填,本地通常为 "EMPTY"

  • model_name: 模型名称(需服务端已加载)

  • temperature: 生成温度,0 表示确定性输出


实验数据为外卖评论, 今天咱们做个有难度的文本分析任务,从不同维度(味道、速度、服务)对外卖评论进行打分(-1.0~1.0)


import cntext as ct

PROMPT = '从口味taste、速度speed、服务service三个维度, 对外卖评论内容进行文本分析, 分别返回不同维度的分值(分值范围-1.0 ~ 1.0)'
BASE_URL = 'https://dashscope.aliyuncs.com/compatible-mode/v1'
API_KEY = '你的API-KEY'
MODEL_NAME = 'qwen-max'

#味道、速度、服务
OUTPUT_FORMAT = {'taste': float, 'speed': float, 'service': float}

COMMENT_CONTENT = '太难吃了'

# 使用
# result = ct.llm(text=COMMENT_CONTENT,
# 或
result = ct.llm(text=COMMENT_CONTENT,
                prompt=PROMPT,
                base_url=BASE_URL,
                api_key=API_KEY,
                model_name=MODEL_NAME,
                temperature=0,
                output_format=OUTPUT_FORMAT)

result

Run

{'taste': -1.0, 'speed': 0.0, 'service': 0.0}

批量运算

import pandas as pd
import cntext as ct


# 构造实验数据
data = ['速度非常快,口味非常好, 服务非常棒!',
        '送餐时间还是比较久',
        '送单很快,菜也不错赞',
        '太难吃了']
df = pd.DataFrame(data, columns=['comment'])


# 分析函数
def llm_analysis(text):
    result = ct.llm(text=text,
                    prompt= '从口味taste、速度speed、服务service三个维度, 对外卖评论内容进行文本分析, 分别返回不同维度的分值(分值范围-1.0 ~ 1.0)',
                    base_url='https://dashscope.aliyuncs.com/compatible-mode/v1',
                    api_key='你的API-KEY',
                    model_name='qwen-max',
                    output_format={'taste': float, 'speed': float, 'service': float}
                               )
    return pd.Series(result)


# 批量运算
df2 = df['comment'].apply(llm_analysis)
res_df = pd.concat([df, df2], axis=1)
# 保存分析结果
res_df.to_csv('result.csv', index=False)
res_df


LLM 更多详细内容,请阅读 教程 | 使用在线大模型将文本数据转化为结构化数据


6.2 内置prompt

cntext

ct.llm.tasks_list()

Run

['sentiment',
 'emotion',
 'classify',
 'intent',
 'keywords',
 'entities',
 'summarize',
 'rewrite',
 'quality',
 'similarity']

# 获取sentiment模板
ct.llm.tasks_get('sentiment')

Run

{'prompt': '分析评论的情感倾向:返回情感类别 label(pos 表示正面,neg 表示负面,neutral 表示中性)和情感分值 score(取值范围 -1~1,负数为负面)',
 'output_format': {'label': 'str', 'score': 'float'}}

# 使用sentiment提示词模板。
# 启用Ollama服务,调用qwen2.5:7b模型
ct.llm("服务很棒!", task="sentiment", backend="ollama",  model_name="qwen2.5:7b")

Run

[cntext2x] ✅ 连接模型服务: http://127.0.0.1:11434/v1
{'label': 'pos', 'score': 0.8}

LLM更多详细内容,请阅读 教程 | 使用大模型将文本数据转化为结构化数据(阿里云百炼)