随着GPT-4、Claude、文心一言等大模型的普及,开发者不再满足于简单的对话体验,而是希望将大模型集成到实际业务中,构建智能应用。本文将以OpenAI API为例,带你从零开始开发一个具备上下文记忆和工具调用能力的智能客服助手。
首先,确保你已安装Python 3.8+,并获取OpenAI API Key。安装所需库:
pip install openai python-dotenv在项目根目录创建.env文件:
OPENAI_API_KEY=你的API密钥基础调用示例:
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))
response = client.chat.completions.create(
model='gpt-4',
messages=[
{'role': 'system', 'content': '你是一个专业的客服助手。'},
{'role': 'user', 'content': '你好,我想查询订单状态。'}
]
)
print(response.choices[0].message.content)为了让对话连贯,需要维护消息历史:
class ConversationManager:
def __init__(self, system_prompt='你是一个智能客服助手。'):
self.messages = [{'role': 'system', 'content': system_prompt}]
def add_message(self, role, content):
self.messages.append({'role': role, 'content': content})
def get_response(self, user_input):
self.add_message('user', user_input)
response = client.chat.completions.create(
model='gpt-4',
messages=self.messages,
temperature=0.7
)
assistant_reply = response.choices[0].message.content
self.add_message('assistant', assistant_reply)
return assistant_reply大模型可以调用外部函数来获取实时数据。定义查询订单的函数:
def get_order_status(order_id):
# 模拟数据库查询
orders = {
'12345': {'status': '已发货', 'estimated_delivery': '2025-03-20'},
'67890': {'status': '处理中', 'estimated_delivery': '2025-03-22'}
}
return orders.get(order_id, {'status': '未找到订单'})
# 定义工具描述
tools = [
{
'type': 'function',
'function': {
'name': 'get_order_status',
'description': '查询订单状态和预计送达时间',
'parameters': {
'type': 'object',
'properties': {
'order_id': {
'type': 'string',
'description': '订单号'
}
},
'required': ['order_id']
}
}
}
]在对话中调用:
def process_with_tools(user_input):
messages = [{'role': 'system', 'content': '你是一个智能客服,可以使用工具查询订单。'},
{'role': 'user', 'content': user_input}]
response = client.chat.completions.create(
model='gpt-4',
messages=messages,
tools=tools,
tool_choice='auto'
)
if response.choices[0].message.tool_calls:
tool_call = response.choices[0].message.tool_calls[0]
if tool_call.function.name == 'get_order_status':
import json
args = json.loads(tool_call.function.arguments)
result = get_order_status(args['order_id'])
messages.append(response.choices[0].message)
messages.append({
'role': 'tool',
'content': json.dumps(result),
'tool_call_id': tool_call.id
})
final_response = client.chat.completions.create(
model='gpt-4',
messages=messages
)
return final_response.choices[0].message.content
else:
return response.choices[0].message.content整合以上模块,创建一个命令行交互程序:
def main():
print('智能客服助手已启动,输入exit退出。')
conv = ConversationManager('你是一个专业的电商客服助手。')
while True:
user_input = input('\n用户: ')
if user_input.lower() == 'exit':
break
# 检测是否包含订单号(简单规则)
import re
order_match = re.search(r'\d{5}', user_input)
if order_match:
reply = process_with_tools(user_input)
else:
reply = conv.get_response(user_input)
print(f'助手: {reply}')
if __name__ == '__main__':
main()stream=True参数实现打字机效果。通过本文的实战,你已掌握大模型应用开发的核心流程:API调用、上下文管理、函数调用集成。这些技术可以扩展到文档问答、代码生成、数据分析等场景。记住,好的Prompt设计和工具集成是提升应用智能水平的关键。
专注技术分享与实战