In our previous blog post, we covered the basics of building and deploying a GPT-J powered chatbot. Now, let’s explore how you can enhance your GPT-J chatbot with external APIs to provide real-time data and enrich your chatbot’s interactions. Specifically, we’ll create a weather bot that fetches current weather information from an external API and exposes an API endpoint for easy interaction.
1. Setting Up the Environment
To start, ensure you have the following prerequisites:Enhance GPT-J Chatbot with External APIs
- Python installed on your machine
- The GPT-J Chatbot sample code from our previous blog setup and running
- An API key from a weather service like OpenWeatherMap
- Install the required libraries using pip:
pip install transformers requests flask
2. Fetching Weather Data
We will use the requests library to make HTTP requests to the OpenWeatherMap API and Flask to create an API endpoint. Update your generate.py
file as follows:
from transformers import GPTJForCausalLM, AutoTokenizer
import requests
# Load the model and tokenizer
model_name = "EleutherAI/gpt-j-6B"
model = GPTJForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
def get_weather(location):
apiKey = 'YOUR_API_KEY' # Replace with your OpenWeatherMap API key
url = f"http://api.openweathermap.org/data/2.5/weather?q={location}&appid={apiKey}&units=metric"
try:
response = requests.get(url)
weather = response.json()
return f"The weather in {location} is {weather['weather'][0]['description']} with a temperature of {weather['main']['temp']}°C."
except Exception as e:
return f"Could not retrieve weather data for {location}. Please try again later. Error: {str(e)}"
def generate_response(prompt):
if 'weather' in prompt.lower():
if ' in ' in prompt.lower():
# Extract location from the prompt
location = prompt.split('weather in ')[-1]
return get_weather(location.strip())
else:
return "Please specify a location to get the weather information."
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(inputs.input_ids, max_length=150, num_return_sequences=1)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
return response
Explanation:
- Weather Data Fetching: Added a
get_weather
function that uses the requests library to fetch weather data from the OpenWeatherMap API. The function constructs the request URL using the location provided by the user and the API key, handles exceptions gracefully, and returns a user-friendly error message if something goes wrong. - Response Generation: Modified the
generate_response
function to check if the user’s prompt includes the word “weather”. If it does, it further checks for the presence of a location specified by ” in “. If both conditions are met, it calls theget_weather
function to get the weather data for the specified location. If the prompt asks for weather but does not specify a location, it responds by asking the user to specify a location. If the prompt does not include a weather-related query, it generates a response using the GPT-J model as usual.
3. Running Your API
python chatbot.py
This will start a Flask server on port 5000. You can send a POST request to http://localhost:5000/chat
with a JSON body containing the prompt
field to get a response from the chatbot.
4. Enhancing Chatbot Capabilities with External APIs
Integrating external APIs into your chatbot not only makes it more interactive but also significantly enhances its usability. By fetching real-time data, your chatbot can answer more than just general queries. For example, integrating financial APIs can enable your chatbot to provide stock prices, currency exchange rates, or even handle transactions securely.
Consider the following areas where external APIs can be integrated:
- News APIs: Keep users updated with the latest news.
- Finance APIs: Provide real-time stock prices and market updates.
- Healthcare APIs: Offer medical information and health tracking.
- E-commerce APIs: Assist users with product information and shopping assistance.
5. Real-World Applications
Enhancing your GPT-J chatbot with external APIs opens up a wide range of real-world applications:
- Customer Support: Automate customer service by integrating support ticketing systems and providing instant answers to common queries.
- Personal Assistants: Develop personal assistants that can manage schedules, set reminders, and fetch necessary information on the go.
- Education: Create educational bots that can provide real-time information, answer questions, and offer resources for learning.
In this post, we focused on how to enhance your GPT-J chatbot with external APIs. By fetching real-time weather data, we demonstrated how to make your chatbot more interactive and useful. This approach can be extended to integrate other APIs and provide a wide range of functionalities, such as fetching news, stock prices, or even performing transactions.
Feel free to experiment with different APIs and share your projects or questions in the comments section below. Happy coding!
Additional Resources
Discover more from Techbreeze IT Solutions
Subscribe to get the latest posts sent to your email.