Rumah > pembangunan bahagian belakang > Tutorial Python > Buat webhook untuk menyambung ke OpenAI dalam Google Cloud Functions

Buat webhook untuk menyambung ke OpenAI dalam Google Cloud Functions

王林
Lepaskan: 2024-02-10 23:42:04
ke hadapan
1164 orang telah melayarinya

创建 webhook 以连接到 Google 云功能中的 OpenAI

Kandungan soalan

Saya sedang berusaha untuk menyambungkan openai ke google dialogflow cx dan sedang menulis webhook saya menggunakan fungsi awan google. Saya melakukan penyelidikan dan menghasilkan kod, tetapi setiap kali ia tidak digunakan. Adakah ini tidak boleh dilakukan dengan fungsi awan kerana saya perlu mendapatkan pertanyaan pengguna daripada dialogflow cx? Atau ada yang hilang dalam kod

Kod fungsi awan saya: entry_point ialah webhook

import openai
import json
import requests
from google.cloud import secretmanager

# Initialize the Secret Manager client
client = secretmanager.SecretManagerServiceClient()

# Store the conversation history if necessary
convo = []

def get_secret(secret_name, project_id, version_id='latest'):
    """
    Retrieve a secret from Google Cloud Secret Manager.
    """
    resource_name = f"projects/{project_id}/secrets/{secret_name}/versions/{version_id}"
    try:
        # Access the secret version
        response = client.access_secret_version(request={"name": resource_name})
        # Return the payload of the secret
        return response.payload.data.decode("UTF-8")
    except Exception as e:
        print(f"Error accessing secret '{secret_name}':", e)
        return None

def query_gpt(prompt):
    """
    Query the OpenAI completion endpoint with a prompt.
    """
    body = {
        "model": "text-davinci-003",
        "prompt": prompt,
        "max_tokens": 200,
        "temperature": 0.9,
        "top_p": 1,
        "n": 1,
        "frequency_penalty": 0,
        "presence_penalty": 0.6  
    }
    header = {"Authorization": f"Bearer {get_secret('openai-api-key', 'my-project-id')}"}
    res = requests.post('https://api.openai.com/v1/completions', json=body, headers=header)
    return res.json()

def webhook(request):
    """
    HTTP Cloud Function entry point.
    """
    if request.method != 'POST':
        return ('Only POST method is accepted', 405)

    request_json = request.get_json(silent=True)
    if not request_json or 'text' not in request_json:
        return ('Missing "text" in request', 400)
    
    query = request_json['text']
    convo.append(f'User: {query}')
    convo.append("Addie:")
    prompt = "\n".join(convo)

    response = query_gpt(prompt)
    result = response.get('choices')[0].get('text').strip('\n')
    convo.append(result)
    
    return json.dumps({
        'fulfillment_response': {
            'messages': [{
                'text': {
                    'text': [result],
                    'redactedText': [result]
                },
                'responseType': 'HANDLER_PROMPT',
                'source': 'VIRTUAL_AGENT'
            }]
        }
    })
Salin selepas log masuk


Jawapan betul


query_gptquery_gpt 函数中的代码有错误。您正在使用 requests 库向 openai 完成端点发出 post 请求,openai api 要求您使用 openai Terdapat ralat dalam kod dalam fungsi. Anda menggunakan pustaka permintaan

untuk membuat permintaan pos ke titik tamat penyiapan openai, api openai memerlukan anda menggunakan

openai

perpustakaan python. 🎜
def query_gpt(prompt):
    
    openai.api_key = get_secret('openai-api-key', 'my-project-id')
    response = openai.Completion.create(model="text-davinci-003", prompt=prompt, max_tokens=200, temperature=0.9, top_p=1, n=1, frequency_penalty=0, presence_penalty=0.6)
    return response
Salin selepas log masuk
🎜Dengan pengubahsuaian ini, kod anda akan berfungsi dengan baik🎜

Atas ialah kandungan terperinci Buat webhook untuk menyambung ke OpenAI dalam Google Cloud Functions. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan