Skip to content

LLM API 快速使用

OpenAI、Anthropic、DeepSeek —— 调用大模型的实用指南


为什么社科学生要学 LLM API?

应用场景

  • 文本数据分析(新闻、社交媒体、访谈)
  • 内容分类和编码
  • 文献总结和综述
  • 问卷设计助手
  • 数据清洗和标注

OpenAI API

安装与配置

bash
pip install openai
python
from openai import OpenAI

# 设置 API Key
client = OpenAI(api_key='your-api-key-here')

# 基本调用
response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "你是一个数据分析助手"},
        {"role": "user", "content": "解释什么是回归分析"}
    ]
)

print(response.choices[0].message.content)

实战案例

案例 1:文本情感分析

python
def analyze_sentiment(text):
    """使用 GPT 分析情感"""
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "你是情感分析专家。回答:正面、负面或中性"},
            {"role": "user", "content": f"分析这段文本的情感:{text}"}
        ]
    )
    return response.choices[0].message.content

# 批量分析
reviews = [
    "这个产品太棒了!",
    "质量很差,浪费钱",
    "一般般,凑合能用"
]

for review in reviews:
    sentiment = analyze_sentiment(review)
    print(f"{review}{sentiment}")

案例 2:结构化数据提取

python
import json

def extract_info(text):
    """从非结构化文本提取信息"""
    prompt = f"""
    从以下文本中提取信息,返回 JSON 格式:
    - name: 姓名
    - age: 年龄
    - occupation: 职业
    - income_range: 收入范围

    文本:{text}
    """

    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}],
        response_format={"type": "json_object"}
    )

    return json.loads(response.choices[0].message.content)

text = "我叫张三,今年35岁,是一名软件工程师,年薪大概在30-50万之间"
info = extract_info(text)
print(info)

案例 3:批量文本分类

python
categories = ["经济", "政治", "社会", "文化", "科技"]

def classify_text(text, categories):
    prompt = f"将以下文本分类到这些类别之一:{', '.join(categories)}\n\n文本:{text}\n\n只返回类别名称。"

    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )

    return response.choices[0].message.content.strip()

# 批量分类新闻
news = [
    "央行今日下调利率0.25个百分点",
    "新技术推动人工智能产业发展",
    "社区开展志愿服务活动"
]

for article in news:
    category = classify_text(article, categories)
    print(f"{article[:20]}... → {category}")

Anthropic Claude API

python
import anthropic

client = anthropic.Anthropic(api_key='your-api-key')

response = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "解释什么是因果推断"}
    ]
)

print(response.content[0].text)

DeepSeek API(国产、便宜)

python
from openai import OpenAI  # DeepSeek 兼容 OpenAI 格式

client = OpenAI(
    api_key='your-deepseek-key',
    base_url='https://api.deepseek.com'
)

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "user", "content": "用中文解释统计显著性"}
    ]
)

print(response.choices[0].message.content)

最佳实践

1. 成本控制

python
# 使用便宜的模型处理简单任务
def smart_call(text, task_complexity='simple'):
    if task_complexity == 'simple':
        model = 'gpt-3.5-turbo'  # 便宜
    else:
        model = 'gpt-4'  # 贵但强大

    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": text}],
        max_tokens=500  # 限制输出长度
    )
    return response.choices[0].message.content

2. 错误处理

python
import time

def safe_api_call(prompt, max_retries=3):
    for i in range(max_retries):
        try:
            response = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=[{"role": "user", "content": prompt}]
            )
            return response.choices[0].message.content
        except Exception as e:
            print(f"尝试 {i+1} 失败: {e}")
            time.sleep(2 ** i)
    return None

3. 批量处理

python
import time

def batch_process(texts, process_func, delay=1):
    """批量处理文本(控制速率)"""
    results = []
    for i, text in enumerate(texts):
        print(f"处理 {i+1}/{len(texts)}")
        result = process_func(text)
        results.append(result)
        time.sleep(delay)  # 避免超限
    return results

社科研究应用

应用 1:访谈数据编码

python
def code_interview(text, codebook):
    """根据编码手册对访谈进行编码"""
    prompt = f"""
    编码手册:{codebook}

    访谈内容:{text}

    请根据编码手册对这段访谈进行编码,返回适用的代码。
    """

    response = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )

    return response.choices[0].message.content

应用 2:文献摘要生成

python
def summarize_paper(abstract):
    """生成论文摘要"""
    prompt = f"""
    请用3句话总结以下论文摘要,包括:
    1. 研究问题
    2. 主要方法
    3. 核心发现

    摘要:{abstract}
    """

    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )

    return response.choices[0].message.content

练习题

python
# 尝试使用 LLM API 完成:
# 1. 对 50 条推文进行情感分析
# 2. 从新闻标题中提取关键信息
# 3. 生成问卷题目建议

Module 10 完成!

恭喜!你已掌握

  • Scikit-learn 机器学习
  • PyTorch/TensorFlow 深度学习基础
  • LLM API 实用调用

最后一个模块:Module 11 最佳实践

冲刺!

基于 MIT 许可证发布。内容版权归作者所有。